大数据hadoop集群搭建
cpu型号:intel(r) xeon(r) cpu e5-2620 v4 @ 2.10ghz
cpu核数:16
内存:64gb
版本:centos linux release 7.5.1804 (core)
主机列表:
ip
主机名
192.168.1.101
node1
192.168.1.102
node2
192.168.1.103
node3
192.168.1.104
node4
192.168.1.105
node5
软件安装包路径:/data/tools/
java_home路径:/opt/java # java为软链接,指向jdk的指定版本
hadoop集群路径:/data/bigdata/
组件名
安装包
说明
jdk
jdk-8u162-linux-x64.tar.gz
基础环境
✔
zookeeper
zookeeper-3.4.12.tar.gz
hadoop
hadoop-2.7.6.tar.gz
spark
spark-2.1.2-bin-hadoop2.7.tgz
scala
scala-2.11.12.tgz
hbase
hbase-1.2.6-bin.tar.gz
hive
apache-hive-2.3.3-bin.tar.gz
kylin
apache-kylin-2.3.1-hbase1x-bin.tar.gz
kafka
kafka_2.11-1.1.0.tgz
hue
hue-3.12.0.tgz
flume
apache-flume-1.8.0-bin.tar.gz
注:所有的软链接不可以跨服务器传输,应该单独创建;否则会把软链接所指向的文件或整个目录传过去;
也可以node1生成一套密钥,然后把~/.ssh整个目录分发到其它服务器,共用一个密钥
官方文档
生产环境:两个主节点只装namenode,不装datanode;
新建指定目录
新建相应目录
由于zookeeper没有提供同时启动集群中所有节点的执行脚本,在生产中逐个节点启动稍微有些麻烦,自定义一个脚本用来启动集群中所有节点,如下:
生产中一个hdfs集群会有两个resourcemanager节点,若逐个节点启动稍微有些麻烦,自定义一个脚本用来启动集群中所有resourcemanager节点,如下:
\
quorumpeermain
journalnode
namenode
dfszkfailovercontroller
datanode
nodemanager
resourcemanager
在任意一台namenode机器上通过jps命令查找到namenode的进程号,然后通过kill -9的方式杀掉进程,观察另一个namenode节点是否会从状态standby变成active状态。
然后观察原来是standby状态的namenode机器的zkfc日志,若最后一行出现如下日志,则表示切换成功:
这时再通过命令启动被kill掉的namenode进程
对应进程的zkfc最后一行日志如下:
可以在两台namenode机器之间来回kill掉namenode进程以检查hdfs的ha配置!
scala运行在jvm虚拟机,需要配置jdk;
如果以上两步没问题,表示scala已安装和配置成功。
说明:<code>spark.executorenv.pythonhashseed=0</code>配置:
如果你使用的是python3+,并且在spark集群上使用distinct(),reducebykey(),和join()这几个函数时,就会触发下面的异常:
python创建遍历对象对象时会对每个对象进行随机哈希创建索引。然而在一个集群上,每个节点计算时对某一个变量创建的索引值不同,会导致数据索引冲突。因此需要设置pythonhashseed来固定随机种子,保证索引一致。参见:
spark集群配置(4):其他填坑杂项
master
worker
historyserver
master和hadoop的namenode进程运行在同一台主机上,与datanode通信
以读写hdfs的数据。regionserver跟hadoop的datanode运行在同一台主机上。
参考:
hbase 数据库简介安装与常用命令的使用
hmaster
hregionserver
hbase web页面http://192.168.1.101:16030
hbase master url:http://192.168.1.101:60010
kafka实战最佳经验
kafka并没有提供同时启动集群中所有节点的执行脚本,在生产中一个kafka集群往往会有多个节点,若逐个节点启动稍微有些麻烦,自定义一个脚本用来启动集群中所有节点,如下:
创建主题:(指明要连接的zookeeper)例如主题名称为:testtopic
查看主题:
任选一台,创建生产者:(kafka集群用户)
另一台,创建消费者
生产者输入一些数据,看消费者是否显示生产者所输入的数据。
kafka也同样没有提供关闭集群操作的脚本。这里我提供一个用来关闭kafka集群的脚本(可以放在任意一条节点上):
参考:https://blog.51cto.com/moerjinrong/2092614
注意:由于html格式问题,上面jdbc的url中的&改为照片中红色下划线的符号
runjar
# 启动hive时才有
安装kylin前确保:hadoop 2.4+、hbase 0.13+、hive 0.98+,1.*已经安装并启动。
hive需要启动metastore和hiveserver2。
apache kylin同样可以使用集群部署,但使用集群部署并不能增加计算速度
因为计算过程使用mapreduce引擎,与kylin自身无关,而是主要为查询提供负载均衡。本次采用单节点。
将hive安装目录lib目录中的所有jar包复制到kylin安装目录下的lib目录中。
如果不关闭,会报如下错误
进入bin目录下分别执行
在kylin安装根目录下执行
到目前为止所启动的进程:
# kylin进程
服务启动后,浏览器访问地址:http://ip:7070/kylin/
用户名:admin
密码:kylin
1.配置数据源
(1)依次选择 model -> data source -> load hive table
(2)输入 hive 中数据库的表名格式为: 数据库名.数据表名
如:db_hivetest.student ,然后点击sync即可。
添加成功后,效果如下图:
1、界面无法同步hive表元数据
解决方法,在kylin安装目录下:
执行命令:<code>vim ./bin/kylin.sh</code> 需要对此脚本做以下修改:
可以看到一个leader,其它为follower就可以*
没有启动的去相应服务器下单独启动