前言
这个集群搭建仅用于学习,并非生产环境。项目背景为新闻日志分析,是学校实训课项目所使用环境,记录一下集群搭建的过程。
1.环境需求
bigdata1 bigdata2 bigdata3
Zookeeper Zookeeper Zookeeper Zookeeper
HDFS NameNode、DataNode NameNode、DataNode DataNode
YARN ResourceManager、NodeManager ResourceManager、NodeManager ResourceManager
HBASE RegionServer RegionServer、Master(backup) RegionServer、Master
Kafka Kafka Kafka Kafka
Flume Flume Flume Flume
MySQL MySQL
Hive Hive
spark spark
2.安装包
搭建环境所用到的安装包、驱动以及初始的CentOS7虚拟机链接,需要的可以自取:
链接:https://pan.baidu.com/s/1pDkwmnHCM6X0NiiSxrcCRg
提取码:co8k
一、Linux环境准备
1.网络配置
(1)集群IP规划
bigdata1 192.168.147.11 192.168.147.2(gateway)
bigdata2 192.168.147.12 192.168.147.2(gateway)
bigdata3 192.168.147.13 192.168.147.2(gateway)
(2)虚拟编辑器NAT设置–VMNet8
子网:192.168.147.0 255.255.255.0
网关:192.168.147.2
取消勾选:使用本地DHCP服务将IP地址分配给虚拟机
(3)设置Windows网络适配器VMnet8
IP:192.168.147.1 255.255.255.0
提示:Windows上VMNet8网卡的IP不要与VMware虚拟编辑器中的网关为同一IP,否则后续可能会出现网络不通以及XShell连不上等问题。
(4)修改CentOS网卡配置
vi /etc/sysconfig/network-scripts/ifcfg-ens32
将配置设置为以下的内容,网关一定要是虚拟编辑器中设置的网关,并且虚拟机为nat模式。
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens32
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.147.11
NETMASK=255.255.255.0
GATEWAY=192.168.147.2
DNS1=114.114.114.114
DNS2=8.8.8.8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
重启网卡 :service network restart
(5)测试网络
能够ping通百度,网络配置完成。
2.linux基本配置
(1)安装网络工具和vim
yum -y install net-tools
yum -y install vim
vim 具有程序编辑的能力,可以以字体颜色辨别语法的正确性,方便程序设计。(主要是看着舒服)
(2)配置主机名与ip地址的映射关系
修改主机名称:vim /etc/hostname
主机名:bigdata1 // 需要重启生效
//或者使用命令:hostnamectl set-hostname bigdata1修改主机名更方便
配置主机名与ip地址的映射:vim /etc/hosts
添加以下内容,这里直接将三台的都添加了,后面就不用再写了。
192.168.147.11 bigdata1
192.168.147.12 bigdata2
192.168.147.13 bigdata3
1
2
3
(3)创建用户
创建用户:adduser bigdata
设置用户密码:passwd bigdata # 回车后输入密码
如果切换用户不能免密,需要设置sudoers(切换到root是必须输密码的)。
vi /etc/sudoers
在100行左右添加:bigdata ALL=(ALL) ALL
(4)关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld
(5)目录规划
mkdir -p /bigdata/app // 存放安装包
mkdir -p /bigdata/modules // 软件的安装目录
mkdir -p /bigdata/datas // 数据目录
修改目录拥有者:chown -R bigdata:bigdata /bigdata
3.安装好java
接下来所有的操作都在新建的用户bigdata下进行。
(1)解压安装包
tar -zxf /bigdata/app/jdk-8u231-linux-x64.tar.gz -C /bigdata/modules/
(2)配置环境变量
sudo vim /etc/profile.d/java.sh
添加以下内容:
JAVA_HOME=/bigdata/modules/jdk1.8.0_231
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME PATH
1
2
3
刷新环境变量:source /etc/profile
(3)验证
java -version
4.服务器克隆
(1)克隆bigdata2和bigdata3
使用bigdata1进行完整克隆出bigdata2和bigdata3。
(2)修改IP地址与主机名
vi /etc/sysconfig/network-scripts/ifcfg-ens32
第二台服务器ip改为:192.168.147.12
第三台服务器ip改为:192.168.147.13
重启网卡 :service network restart
vi /etc/hostname
第二台服务器主机名改为:bigdata2
第三台服务器主机名改为:bigdata3
(3)实现服务器间免密钥登录
三台服务器输入以下命令,根据提示回车三次生成密钥:
ssh-keygen -t rsa
复制公钥到其他虚拟机,注意按提示操作(三台虚拟机都要输入执行以下命令):
ssh-copy-id bigdata1
ssh-copy-id bigdata2
ssh-copy-id bigdata3
测试免密登录:
二、Zookeeper安装部署
提示: mysql等单机安装的软件外,安装都在bigdata1安装再进行分发。
(1)解压安装包
tar -zxf /bigdata/app/zookeeper-3.4.10.tar.gz -C /bigdata/modules/
(2)配置环境变量
sudo vim /etc/profile.d/zookeeper.sh
添加以下内容:
ZOOKEEPER_HOME=/bigdata/modules/zookeeper-3.4.10
PATH=$PATH:$ZOOKEEPER_HOME/bin
export ZOOKEEPER_HOME PATH
1
2
3
刷新环境变量:source /etc/profile
(3)配置zookeeper文件
cd /bigdata/modules/zookeeper-3.4.10/conf/
复制模板文件:cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
将12行的dataDir修改为:dataDir=/bigdata/datas/zookeeper
在文件末尾添加以下内容:
#2888端口号用于服务器间通信,3888端口用于leader选举
server.1=bigdata1:2888:3888
server.2=bigdata2:2888:3888
server.3=bigdata3:2888:3888
1
2
3
4
(4)修改日志保存位置
vim log4j.properties 第四行改为
zookeeper.log.dir=/bigdata/modules/zookeeper-3.4.10/logs
1
vim …/bin/zkEnv.sh
约56行,将ZOO_LOG_DIR修改为以下内容
ZOO_LOG_DIR="/bigdata/modules/zookeeper-3.4.10/logs"
1
(5)新建myid文件
mkdir -p /bigdata/datas/zookeeper
vim /bigdata/datas/zookeeper/myid
输入:1
(6)分发zookeeper到bigdata2、bigdata3
分发zookeeper安装包:
scp -r /bigdata/modules/zookeeper-3.4.10/ bigdata2:/bigdata/modules/
scp -r /bigdata/modules/zookeeper-3.4.10/ bigdata3:/bigdata/modules/
分发环境变量配置:
sudo scp -r /etc/profile.d/zookeeper.sh bigdata2:/etc/profile.d/
sudo scp -r /etc/profile.d/zookeeper.sh bigdata3:/etc/profile.d/
在第二、第三台刷新坏境变量:source /etc/profile
新建myid文件:
mkdir -p /bigdata/datas/zookeeper
vim /bigdata/datas/zookeeper/myid
第二台输入:2
第三台输入:3
(7)创建启停zookeeper脚本
在第一台服务器操作:
vim /bigdata/modules/zookeeper-3.4.10/bin/zookeeper.sh
chmod 755 /bigdata/modules/zookeeper-3.4.10/bin/zookeeper.sh
输入以下内容:
#! /bin/bash
case $1 in
"start"){
for i in bigdata1 bigdata2 bigdata3
do
echo " --------启动 $i zookeeper-------"
ssh $i "/bigdata/modules/zookeeper-3.4.10/bin/zkServer.sh start"
done
};;
"stop"){
for i in bigdata1 bigdata2 bigdata3
do
echo " --------停止 $i zookeeper-------"
ssh $i "/bigdata/modules/zookeeper-3.4.10/bin/zkServer.sh stop"
done
};;
"status"){
for i in bigdata1 bigdata2 bigdata3
do
echo " --------状态 $i zookeeper-------"
ssh $i "/bigdata/modules/zookeeper-3.4.10/bin/zkServer.sh status"
done
};;
esac
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
启/停三台服务器zookeeper:zookeeper.sh start/stop
三、Hadoop HA安装部署
1.安装与基本配置
(1)解压安装包
tar -zxf /bigdata/app/hadoop-2.10.2.tar.gz -C /bigdata/modules/
(2)配置环境变量
sudo vim /etc/profile.d/hadoop.sh
添加以下内容:
HADOOP_HOME=/bigdata/modules/hadoop-2.10.2
PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_HOME PATH
1
2
3
刷新环境变量:source /etc/profile
(3)验证
hadoop version
2.修改配置文件
(1)修改*-env.sh文件
vim ./hadoop-2.10.2/etc/hadoop/hadoop-env.sh // 约25行
vim ./hadoop-2.10.2/etc/hadoop/mapred-env.sh // 约16行
vim ./hadoop-2.10.2/etc/hadoop/yarn-env.sh // 约23行
修改JAVA_HOME
export JAVA_HOME=/bigdata/modules/jdk1.8.0_231
1
(2)修改core-site.xml
将以下内容添加到 configuration 标签中:
<!-- hdfs地址,ha模式中是连接到nameservice -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1</value>
</property>
<!-- 这里的路径默认是NameNode、DataNode、JournalNode等存放数据的公共目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/bigdata/datas/hadoop/tmp</value>
</property>
<!-- 高可用集群配置,指定ZooKeeper集群的地址和端口。注意,数量一定是奇数,且不少于三个节点-->
<property>
<name>ha.zookeeper.quorum</name>
<value>bigdata1:2181,bigdata2:2181,bigdata3:2181</value>
</property>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
(3)修改hdfs-site.xml
将以下内容添加到 configuration 标签中:
<!-- 指定副本数,不能超过机器节点数 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 为namenode集群定义一个services name -->
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<!-- nameservice 包含哪些namenode,为各个namenode起名 -->
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>bigdata1,bigdata2</value>
</property>
<!-- 名为master188的namenode的rpc地址和端口号,rpc用来和datanode通讯 -->
<property>
<name>dfs.namenode.rpc-address.ns1.bigdata1</name>
<value>bigdata1:9000</value>
</property>
<!-- 名为master189的namenode的rpc地址和端口号,rpc用来和datanode通讯 -->
<property>
<name>dfs.namenode.rpc-address.ns1.bigdata2</name>
<value>bigdata2:9000</value>
</property>
<!--名为master188的namenode的http地址和端口号,用来和web客户端通讯 -->
<property>
<name>dfs.namenode.http-address.ns1.bigdata1</name>
<value>bigdata1:50070</value>
</property>
<!-- 名为master189的namenode的http地址和端口号,用来和web客户端通讯 -->
<property>
<name>dfs.namenode.http-address.ns1.bigdata2</name>
<value>bigdata2:50070</value>
</property>
<!-- namenode间用于共享编辑日志的journal节点列表 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://bigdata1:8485;bigdata2:8485;bigdata3:8485/ns1</value>
</property>
<!-- 指定该集群出现故障时,是否自动切换到另一台namenode -->
<property>
<name>dfs.ha.automatic-failover.enabled.ns1</name>
<value>true</value>
</property>
<!-- journalnode 上用于存放edits日志的目录 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/bigdata/datas/hadoop/tmp/journalnode</value>
</property>
<!-- 客户端连接可用状态的NameNode所用的代理类 -->
<property>
<name>dfs.client.failover.proxy.provider.ns1</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- 一旦需要NameNode切换,使用ssh方式进行操作 -->
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<!-- 如果使用ssh进行故障切换,使用ssh通信时用的密钥存储的位置 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/bigdata/.ssh/id_rsa</value>
</property>
<!-- connect-timeout超时时间 -->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
(4)修改mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
将以下内容添加到 configuration 标签中:
<!-- 采用yarn为mapreduce的资源调度框架 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
1
2
3
4
5
(5)修改yarn-site.xml
将以下内容添加到 configuration 标签中:
<!-- 启用HA高可用性 -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!-- 指定resourcemanager的名字 -->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yrc</value>
</property>
<!-- 使用了2个resourcemanager,分别指定Resourcemanager的地址 -->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!-- 指定rm1的地址 -->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>bigdata1</value>
</property>
<!-- 指定rm2的地址 -->
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>bigdata2</value>
</property>
<!-- 指定当前机器bigdata1作为rm1 ,bigdata2的这一项设置为rm2-->
<property>
<name>yarn.resourcemanager.ha.id</name>
<value>rm1</value>
</property>
<!-- 指定zookeeper集群机器 -->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>bigdata1:2181,bigdata2:2181,bigdata3:2181</value>
</property>
<!-- NodeManager上运行的附属服务,默认是mapreduce_shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
(6)修改slaves
添加以下内容:
bigdata1
bigdata2
bigdata3
1
2
3
3.分发Hadoop
(1)分发hadoop安装包
scp -r /bigdata/modules/hadoop-2.10.2/ bigdata2:/bigdata/modules/
scp -r /bigdata/modules/hadoop-2.10.2/ bigdata3:/bigdata/modules/
(2)分发环境变量hadoop.sh
sudo scp -r /etc/profile.d/hadoop.sh bigdata2:/etc/profile.d/
sudo scp -r /etc/profile.d/hadoop.sh bigdata3:/etc/profile.d/
在第二、第三台刷新坏境变量:source /etc/profile
(3)修改配置文件yarn-site.xml
第二台:yarn.resourcemanager.ha.id修改为rm2
<property>
<name>yarn.resourcemanager.ha.id</name>
<value>rm2</value>
</property>
1
2
3
4
第三台:删除yarn.resourcemanager.ha.id属性
4.初始化
(1)zokeeper初始化
在第一台虚拟机执行:hdfs zkfc -formatZK
(2)初始化NameNode
1、在三台虚拟机启动journalnode:hadoop-daemon.sh start journalnode
2、在第一台主机上初始化journalnode(失败直接跳过执行下一命令):hdfs namenode -initializeSharedEdits -force
3、在第一台初始化NameNode:hdfs namenode -format
4、第一台启动NameNode:hdfs namenode
5、第二台备用namenode结点上同步主节点namenode数据:hdfs namenode -bootstrapStandby
// 第二台同步完成后,第一台可Ctrl+C停止
6、停止journalnode:hadoop-daemon.sh stop journalnode
(3)修改start-yarn.sh和stop-yarn.sh
分别修改第一、第二台的start-yarn.sh和stop-yarn.sh
在31行将yarn-daemon.sh修改为yarn-daemons.sh
start-yarn.sh
"$bin"/yarn-daemons.sh --config $YARN_CONF_DIR start resourcemanager
stop-yarn.sh
"$bin"/yarn-daemons.sh --config $YARN_CONF_DIR stop resourcemanager
1
2
3
4
启动hadoop集群:start-all.sh // 先启动zookeeper
第一台进程:NameNode、DataNode、ResourceManager、NodeManager、JournalNode
第一台进程:NameNode、DataNode、ResourceManager、NodeManager、JournalNode
第一台进程:DataNode、NodeManager、JournalNode
如果进程不正确,请检查配置文件后重新初始化。
注意:需要在第一第二台启动zkfc才能正常使用:hadoop-daemon.sh start zkfc
zkfc启动失败问题
进入zookeeper终端查看没有hadoop-ha:zkCli.sh -server bigdata1:2181
在第一台重新执行zookeeper初始化:hdfs zkfc -formatZK
可以看到现在就出现了hadoop-ha,这时就可以正常启动zkfc
可以访问web界面,并且第一台或第二台为active状态,安装完成。
四、Hbase安装部署
(1)解压安装包
tar -zxf /bigdata/app/hbase-2.3.3-bin.tar.gz -C /bigdata/modules/
(2)配置环境变量
sudo vim /etc/profile.d/hbase.sh
添加以下内容:
HBASE_HOME=/bigdata/modules/hbase-2.3.3
PATH=$PATH:$HBASE_HOME/bin
export HBASE_HOME PATH
1
2
3
刷新环境变量:source /etc/profile
(3)验证
hbase version
(4)修改hbase-env.sh
修改JAVA_HOME的值,约28行
export JAVA_HOME=/bigdata/modules/jdk1.8.0_231
1
修改HBASE_PID_DIR的值,约118行
export HBASE_PID_DIR=/bigdata/datas/hbase/pids
1
修改HBASE_MANAGES_ZK的值,约127行
export HBASE_MANAGES_ZK=false
1
(5)修改hbase-site.xml
文件configuration 标签中的内容修改为以下内容:
<!-- 设置HRegionServers共享目录,ns1是hdfs的nameservice -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://ns1/hbase</value>
</property>
<!-- 启用分布式模式 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 指定HBase的Master的端口 -->
<property>
<name>hbase.master.port</name>
<value>16000</value>
</property>
<!-- 指定Zookeeper集群位置 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>bigdata1:2181,bigdata2:2181,bigdata3:2181</value>
</property>
<!-- 配置zoo.cfg中dataDir相同的目录 -->
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/bigdata/datas/zookeeper</value>
</property>
<!-- 指定ZooKeeper集群端口 -->
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
<!-- 指定hbase本地文件系统tmp目录 -->
<property>
<name>hbase.tmp.dir</name>
<value>/bigdata/datas/hbase/tmp</value>
</property>
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
(6)修改log4j.properties
20行的hbase.log.dir修改为:
hbase.log.dir=/bigdata/modules/hbase-2.3.3
(7)修改regionservers
bigdata1
bigdata2
bigdata3
1
2
3
(8)新建backup-masters文件
在backup-masters中输入hbase backup masters的主机名
bigdata2
1
(9)复制hadoop配置文件到hbase
cp /bigdata/modules/hadoop-2.10.2/etc/hadoop/hdfs-site.xml /bigdata/modules/hbase-2.3.3/conf/
cp /bigdata/modules/hadoop-2.10.2/etc/hadoop/core-site.xml /bigdata/modules/hbase-2.3.3/conf/
(10)分发habse
分发安装包:
scp -r /bigdata/modules/hbase-2.3.3/ bigdata2:/bigdata/modules/
scp -r /bigdata/modules/hbase-2.3.3/ bigdata3:/bigdata/modules/
分发habse.sh:
sudo scp -r /etc/profile.d/hbase.sh bigdata2:/etc/profile.d/
sudo scp -r /etc/profile.d/hbase.sh bigdata3:/etc/profile.d/
在第二、第三台刷新坏境变量:source /etc/profile
(11)启动验证
在第三台主机执行启动命令:start-hbase.sh / stop-hbase.sh
第一台hbase进程:HRegionServer
第二台hbase进程:HMaster、HRegionServer
第三台hbase进程:HMaster、HRegionServer
访问web ui界面,bigdata2为backup masters
五、Kafka安装部署
(1)解压安装包
tar -zxf /bigdata/app/kafka_2.12-3.2.0.tgz -C /bigdata/modules/
修改kafka目录名称:mv kafka_2.12-3.2.0/ kafka-3.2.0
(2)配置环境变量
sudo vim /etc/profile.d/kafka.sh
添加以下内容:
KAFKA_HOME=/bigdata/modules/kafka-3.2.0/
PATH=$PATH:$KAFKA_HOME/bin
export KAFKA_HOME PATH
1
2
3
刷新环境变量:source /etc/profile
(3)修改配置文件server.properties
根据以下说明修改配置
# 约在24行,broker.id属性在kafka集群中必须要是唯一,集群时按顺序递增:0,1,2,3
broker.id=0
# 约在34行,kafka部署的机器ip和提供服务的端口号,三台主机要对应改一下主机名
listeners=PLAINTEXT://bigdata1:9092
# 约在62行,kafka的消息日志存储目录
log.dirs=/bigdata/modules/kafka-3.2.0/logs
# 约在128行,kafka连接zookeeper的地址
zookeeper.connect=bigdata1:2181,bigdata2:2181,bigdata3:2181
1
2
3
4
5
6
7
8
(4)分发kafka
分发安装包:
scp -r /bigdata/modules/kafka-3.2.0/ bigdata2:/bigdata/modules/
scp -r /bigdata/modules/kafka-3.2.0/ bigdata3:/bigdata/modules/
分发kafka.sh:
sudo scp -r /etc/profile.d/kafka.sh bigdata2:/etc/profile.d/
sudo scp -r /etc/profile.d/kafka.sh bigdata3:/etc/profile.d/
在第二、第三台刷新坏境变量:source /etc/profile
(5)修改二、三主机的server.properties
修改以下属性
bigdata2属性修改:
broker.id=1
listeners=PLAINTEXT://bigdata2:9092
bigdata3属性修改::
broker.id=2
listeners=PLAINTEXT://bigdata3:9092
1
2
3
4
5
6
(6)创建启停zookeeper脚本
在第一台服务器操作:
vim /bigdata/modules/kafka-3.2.0/bin/kafka.sh
chmod 755 /bigdata/modules/kafka-3.2.0/bin/kafka.sh
输入以下内容:
#! /bin/bash
case $1 in
"start"){
for i in bigdata1 bigdata2 bigdata3
do
echo " --------启动 $i kafka-------"
# 用于KafkaManager监控
ssh $i "export JMX_PORT=9988 && /bigdata/modules/kafka-3.2.0/bin/kafka-server-start.sh -daemon /bigdata/modules/kafka-3.2.0/config/server.properties"
done
};;
"stop"){
for i in bigdata1 bigdata2 bigdata3
do
echo " --------停止 $i kafka-------"
ssh $i "/bigdata/modules/kafka-3.2.0/bin/kafka-server-stop.sh"
done
};;
esac
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
启/停kafka:kafka.sh start/stop
提示: kafka3版本后不再依赖zookeeper,因此命令有所变化,例如:
kafka-topics.sh --zookeeper bigdata1:2181,bigdata2:2181,bigdata3:2181 --list
1
这条命令应改为
kafka-topics.sh --bootstrap-server bigdata1:9092,bigdata2:9092,bigdata3:9092 --list
1
六、Flume安装部署
(1)解压安装包
tar -zxf /bigdata/app/apache-flume-1.9.0-bin.tar.gz -C /bigdata/modules/
修改kafka目录名称:mv apache-flume-1.9.0-bin/ flume-1.9.0
(2)配置环境变量
sudo vim /etc/profile.d/flume.sh
添加以下内容:
FLUME_HOME=/bigdata/modules/flume-1.9.0
PATH=$PATH:$FLUME_HOME/bin
export FLUME_HOME PATH
1
2
3
刷新环境变量:source /etc/profile
(3)修改配置文件
cd /bigdata/modules/flume-1.9.0/conf/
cp flume-env.sh.template flume-env.sh
修改22行JAVA_HOME的值:
export JAVA_HOME=/bigdata/modules/jdk1.8.0_231
1
修改log4j.properties,修改27行flume.log.dir的值:
flume.log.dir=/bigdata/modules/flume-1.9.0/logs
1
(4)验证
flume-ng version
(5)分发Flume
分发安装包:
scp -r /bigdata/modules/flume-1.9.0/ bigdata2:/bigdata/modules/
scp -r /bigdata/modules/flume-1.9.0/ bigdata3:/bigdata/modules/
分发habse.sh:
sudo scp -r /etc/profile.d/flume.sh bigdata2:/etc/profile.d/
sudo scp -r /etc/profile.d/flume.sh bigdata3:/etc/profile.d/
在第二、第三台刷新坏境变量:source /etc/profile
七、MySQL安装
在第三台主机安装mysql。
(1)下载安装包
wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
1
未安装wget先执行以下命令安装:
sudo yum -y install wget
1
(2)安装
sudo rpm -ivh mysql57-community-release-el7-8.noarch.rpm
1
(3)安装服务
sudo yum -y install mysql-server
1
报错问题:失败的软件包是:mysql-community-libs-compat-5.7.38-1.el7.x86_64
解决办法:
sudo vim /etc/yum.repos.d/mysql-community.repo
1
找到[mysql57-community]将其中的gpgcheck值设置为0,然后重新执行安装服务命令。
[mysql57-community]
32 name=MySQL 5.7 Community Server
33 baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
34 enabled=1
35 gpgcheck=0
36 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
1
2
3
4
5
6
安装完成启动mysql服务:
systemctl start mysqld
1
(4)设置密码
获取初始自动生成的密码,讲localhost后面的密码复制下来:
sudo grep 'temporary password' /var/log/mysqld.log
1
进入MySQL:
mysql -uroot -p4ehS4A3jHA+s //-p后面是密码我这里生成的就是4ehS4A3jHA+s
1
修改MySQL密码的安全策略(也可以不改,但是密码必须是复杂的,不允许设置简单密码):
set global validate_password_policy=LOW;
set global validate_password_length=4;// 密码长度,最低是4,哪怕你设置1、2、3,最短长度也是4
1
2
修改密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
1
(5)开启mysql的远程访问
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
// 刷新生效
flush privileges;
1
2
3
(6)设置编码格式
SET character_set_server = utf8;
SET character_set_database = utf8;
1
2
八、Hive安装
(1)解压安装包
tar -zxf /bigdata/app/apache-hive-2.3.3-bin.tar.gz -C /bigdata/modules/
修改kafka目录名称:mv apache-hive-2.3.3-bin/ hive-2.3.3
(2)配置环境变量
sudo vim /etc/profile.d/hive.sh
添加以下内容:
HIVE_HOME=/bigdata/modules/hive-2.3.3
PATH=$PATH:$HIVE_HOME/bin
export HIVE_HOME PATH
1
2
3
刷新环境变量:source /etc/profile
(3)配置hive-env.sh
/bigdata/modules/hive-2.3.3/conf
cp hive-env.sh.template hive-env.sh
vim hive-env.sh
在48行添加
HADOOP_HOME=/bigdata/modules/hadoop-2.10.2/
1
(4)修改hive-site.xml
vim hive-site.xml
在hive-site.xml添加以下内容:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!--mysql数据库的访问路径,如果没有则自动创建-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hivedb?createDatabaseIfNotExist=true&useSSL=false</value>
</property>
<!--连接数据的驱动-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!--连接数据的用户名-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!--连接数据的密码-->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
</property>
<!-- 查询时是否显示列名 -->
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
</configuration>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
(5)MySQL驱动
将MySQL驱动包上传到/bigdata/modules/hive-2.3.3/lib
(6)初始化元数据库
schematool -dbType mysql -initSchema
1
初始化完成检查mysql中是否已经创建lhivedb:
九、Spark部署
1.Scala安装
(1)解压安装包
tar -zxf /bigdata/app/scala-2.12.15.tgz -C /bigdata/modules/
(2)配置环境变量
sudo vim /etc/profile.d/scala.sh
添加以下内容:
SCALA_HOME=/bigdata/modules/scala-2.12.15
PATH=$PATH:$SCALA_HOME/bin
export SCALA_HOME PATH
1
2
3
刷新环境变量:source /etc/profile
(3)验证
scala -version
2.Spark安装
(1)解压安装包
tar -zxf /bigdata/app/spark-2.4.8-bin-hadoop2.7.tgz -C /bigdata/modules/
修改kafka目录名称:mv spark-2.4.8-bin-hadoop2.7/ spark-2.4.8
(2)配置环境变量
sudo vim /etc/profile.d/spark.sh
添加以下内容:
SPARK_HOME=/bigdata/modules/spark-2.4.8
PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
export SPARK_HOME PATH
1
2
3
刷新环境变量:source /etc/profile
(3)配置spark-env.sh
cd …/spark-2.4.8/conf
cp spark-env.sh.template spark-env.sh
vim spark-env.sh
添加以下内容
export SCALA_HOME=/bigdata/modules/scala-2.12.15
export JAVA_HOME=/bigdata/modules/jdk1.8.0_231/
export HADOOP_HOME=/bigdata/modules/hadoop-2.10.2
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export YARN_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export SPARK_HOME=/bigdata/modules/spark-2.4.8
export SPARK_MASTER_IP=bigdata3
export SPARK_WORKER_CORES=16
export SPARK_WORKER_INSTANCES=1
export SPARK_EXECUTOR_MEMORY=1G
#SPARK_MASTER_PORT=7077
# spark webui默认的端口是8080,但是与其他服务会产生有冲突,这里修改为8888
SPARK_MASTER_WEBUI_PORT=8888
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://ns1/spark/logs"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(3)创建slaves
cp slaves.template slaves // 不需要做修改,里面默认有localhost
(4)上传jar包到hdfs
创建hdfs目录:hadoop fs -mkdir -p /spark/jars/
hadoop fs -put /bigdata/modules/spark-2.4.8/jars/* /spark/jars/
(5)修改spark-defaults.conf
cp spark-defaults.conf.template spark-defaults.conf
vim spark-defaults.conf
在末尾添加:
spark.yarn.jars hdfs://ns1/spark/jars/*
# 配置Spark History Server
spark.eventLog.enabled true
spark.eventLog.dir hdfs://ns1/spark/logs
spark.eventLog.compress true
1
2
3
4
5
(6)修改hadoop中yarn-site.xml的配置
将以下内容添加到hadoop中的yarn-stte.xml,确保spark可以运行在 yarn上
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
1
2
3
4
5
6
7
8
(7)修改spark的启停脚本
spark的启停命令start-all.sh和hadoop的命令相同,将其修改为start-spark-all.sh,在sbin目录下
mv start-all.sh start-spark-all.sh
mv stop-all.sh stop-spark-all.sh
1
2
(9)启动spark
start-spark-all.sh
应该两个进程:Master、Worker
访问web界面:
(9)启动history server
创建HDFS目录:
// /spark/logs是我们配置的history server目录,需要创建才能正常启动history server
hadoop fs -mkdir -p /spark/logs
1
2
start-history-server.sh
web界面:
启动集群服务
(1)启动顺序
顺序 服务 命令 备注
1 Zookeeper zkServer.sh start 使用脚本zookeeper.sh,在第一台主机直接启动三台服务器的QuorumPeerMain进程
2 Hadoop start-all.sh 配置好只需在第一台执行
3 ZKFC hadoop-daemon.sh start zkfc 一、二主机执(NameNode主机)
4 Hbase start-hbase.sh 第三台执行,从这里开始往后的进程可以不严格按照顺序,但是前三个要按顺序启动
5 Kafka kafka-server-start.sh -daemon …/server.properties 使用脚本kafka.sh,在第一台可以直接启动三台主机的kafka服务
6 Spark start-spark-all.sh 第三台执行
(2)关闭顺序
关闭的顺序就是和启动顺序相反。
(3)创建启动所有服务的脚本
在zookeeper的bin目录下创建all.sh,这样无论在哪个目录下都可以启动,当然也可以是其他软件的bin目录。
touch /bigdata/modules/zookeeper-3.4.10/bin/all.sh
chmod 755 /bigdata/modules/zookeeper-3.4.10/bin/all.sh
在all.sh输入以下内容:
#! /bin/bash
case $1 in
"start"){
echo " ********启动 zookeeper ******** "
ssh bigdata1 "/bigdata/modules/zookeeper-3.4.10/bin/zookeeper.sh start"
echo " ******** 启动 hadoop ******** "
ssh bigdata1 "/bigdata/modules/hadoop-2.10.2/sbin/start-all.sh"
echo " ******** 启动 zkfc ******** "
for i in bigdata1 bigdata2
do
echo " ------- 启动 $i zkfc ------- "
ssh $i "/bigdata/modules/hadoop-2.10.2/sbin/hadoop-daemon.sh start zkfc"
done
echo " ******** 启动 hbase ******** "
ssh bigdata3 "/bigdata/modules/hbase-2.3.3/bin/start-hbase.sh"
echo " ******** 启动 kafka ******** "
ssh bigdata1 "/bigdata/modules/kafka-3.2.0/bin/kafka.sh start"
echo " ******** 启动 spark ******** "
ssh bigdata3 "/bigdata/modules/spark-3.0.3/sbin/start-spark-all.sh"
};;
"stop"){
echo " ******** 停止 spark ******** "
ssh bigdata3 "/bigdata/modules/spark-3.0.3/sbin/stop-spark-all.sh"
echo " ******** 停止 kafka ******** "
ssh bigdata1 "/bigdata/modules/kafka-3.2.0/bin/kafka.sh stop"
echo " ******** 停止 hbase ******** "
ssh bigdata3 "/bigdata/modules/hbase-2.3.3/bin/stop-hbase.sh"
echo " ******** 停止 zkfc ******** "
for i in bigdata1 bigdata2
do
echo " ------- 停止 $i zkfc ------- "
ssh $i "/bigdata/modules/hadoop-2.10.2/sbin/hadoop-daemon.sh stop zkfc"
done
echo " ******** 停止 hadoop ******** "
ssh bigdata1 "/bigdata/modules/hadoop-2.10.2/sbin/stop-all.sh"
echo " ******** 停止 zookeeper ******** "
ssh bigdata1 "/bigdata/modules/zookeeper-3.4.10/bin/zookeeper.sh stop"
};;
esac
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
(4)启动服务
all.sh start
三台主机应有服务:
bigdata1 bigdata2 bigdata3
QuorumPeerMain QuorumPeerMain QuorumPeerMain
JournalNode JournalNode JournalNode
NameNode NameNode
DataNode DataNode DataNode
NodeManager NodeManager NodeManager
ResourceManager ResourceManager
DFSZKFailoverController DFSZKFailoverController
HMaster HMaster
HRegionServer HRegionServer HRegionServer
Kafka Kafka Kafka
Master、Worker
至此,整个集群搭建完成。
免责申明:
本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!
《数据治理行业实践白皮书》下载地址:https://fs80.cn/4w2atu
《数栈V6.0产品白皮书》下载地址:https://fs80.cn/cw0iw1
想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=bbs
同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:https://github.com/DTStack