本手册主要内容为:大数据相关组件的集群安装与部署过程,以及在安装与部署过程中常见问题的处理方法。根据实际需求,本手册内的大数据组件都为原生版本,不包含HDP和CDH的相关发行版本。所有大数据组件都尽可能的部署高可用模式。
服务器(IP) | 服务器类型 | 操作系统 | CPU(core) | 内存(GB) | 磁盘(GB) |
---|---|---|---|---|---|
10.10.195.53 | 虚拟机 | Centos7.2 | 8 | 64 | 800 |
10.10.195.54 | 虚拟机 | Centos7.2 | 8 | 64 | 800 |
10.10.195.55 | 虚拟机 | Centos7.2 | 8 | 64 | 800 |
10.10.195.56 | 虚拟机 | Centos7.2 | 8 | 64 | 800 |
规划 | 10.10.195.53 | 10.10.195.54 | 10.10.195.55 | 10.10.195.56 |
---|---|---|---|---|
主机名 | bigdata-1.mid.neu.com | bigdata-2.mid.neu.com | bigdata-3.mid.neu.com | bigdata-4.mid.neu.com |
Zookeeper | 是 | 是 | 是 | 否 |
Hadoop-NameNode | 是 | 是 | 否 | 否 |
Hadoop-DataNode | 是 | 是 | 是 | 是 |
Hadoop-ResourceServer | 是 | 是 | 否 | 否 |
Hadoop-NodeManager | 是 | 是 | 是 | 是 |
Hadoop-DFSZKFailoverController | 是 | 是 | 否 | 否 |
Hadoop-JournalNode | 是 | 是 | 是 | 否 |
Kafka | 是 | 是 | 是 | 否 |
Clickhouse | 是 | 是 | 是 | 是 |
Flink-JobManager | 是 | 是 | 否 | 否 |
Flink-TaskManager | 是 | 是 | 是 | 是 |
组件 | 版本 |
---|---|
Hadoop | 3.1.2 |
Hive | 3.1.2 |
Zookeeper | 3.5.5 |
Tez | 0.9.2 |
Clickhouse | 20.1.6.30 |
Kafka | 2.3.0 |
Flink | 1.10 |
执行:
vim /etc/security/limits.conf
添加如下内容:
* soft noproc 65535
* hard noproc 65535
* soft nofile 65535
* hard nofile 65535
hostnamectl set-hostname bigdata-1.mid.neu.com
hostnamectl set-hostname bigdata-2.mid.neu.com
hostnamectl set-hostname bigdata-3.mid.neu.com
hostnamectl set-hostname bigdata-4.mid.neu.com
hostname bigdata-1.mid.neu.com
hostname bigdata-2.mid.neu.com
hostname bigdata-3.mid.neu.com
hostname bigdata-4.mid.neu.com
修改
vim /etc/hosts
添加如下内容:
10.10.195.53 bigdata-1.mid.neu.com bigdata-1
10.10.195.54 bigdata-2.mid.neu.com bigdata-2
10.10.195.55 bigdata-3.mid.neu.com bigdata-3
10.10.195.56 bigdata-4.mid.neu.com bigdata-4
测试:
ping bigdata-1
ping bigdata-2
ping bigdata-3
ping bigdata-4
查看防火墙状态:
firewall-cmd --state
临时停止firewall:
systemctl stop firewalld.service
永久禁止开启启动firewall:
systemctl disable firewalld.service
查看SELinux状态:
getenforce 或者 /usr/sbin/sestatus -v
临时禁用:
setenforce 0
永久禁用:
vim /etc/selinux/config
将SELINUX=enforce改成SELINUX=disabled。
永久禁用需要保存和重启才可以生效。
在所有服务器上执行如下命令:
cd ~
ssh-keygen
直接一路回车,采用默认配置即可。
在所有服务器上执行如下命令:
ssh-copy-id -i ~/.ssh/id_rsa.pub bigdata-1.mid.neu.com
ssh-copy-id -i ~/.ssh/id_rsa.pub bigdata-2.mid.neu.com
ssh-copy-id -i ~/.ssh/id_rsa.pub bigdata-3.mid.neu.com
ssh-copy-id -i ~/.ssh/id_rsa.pub bigdata-4.mid.neu.com
cd ~/.ssh
scp id_rsa id_rsa.pub bigdata-2.mid.neu.com:/root/.ssh/
scp id_rsa id_rsa.pub bigdata-3.mid.neu.com:/root/.ssh/
scp id_rsa id_rsa.pub bigdata-4.mid.neu.com:/root/.ssh/
在主服务器上执行:
vim /etc/ntp.conf
注释掉原先的默认配置:
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
添加如下配置(配置时钟同步地址为时钟同步服务器):
server 10.10.195.126 minpoll 4 maxpoll 5
fudge 127.127.1.0 stratum 3
restrict 10.10.195.126
重启ntp服务:
systemctl restart ntpd.service
查看ntp状态:
ntpq -p
f) 设置开机自启动
systemctl enable ntpd
3.2. JDK安装
在主节点执行如下步骤:
a) 解压缩:
tar -xzvf jdk-8u211-linux-x64.tar.gz -C /home
b) 设置环境变量:
vim /etc/profile
c) 添加如下内容:
export JAVA_HOME=/home/jdk1.8.0_211
export JRE_HOME= J A V A H O M E / j r e e x p o r t C L A S S P A T H = . : {JAVA_HOME}/jre export CLASSPATH=.: JAVAHOME/jreexportCLASSPATH=.:{JAVA_HOME}/lib: J R E H O M E / l i b e x p o r t P A T H = {JRE_HOME}/lib export PATH= JREHOME/libexportPATH={JAVA_HOME}/bin:$PATH
d) 生效:
source /etc/profile
e) 验证:
java -version
在其他节点执行如下步骤:
a) 从主节点复制文件到其他节点:
scp -r jdk1.8.0_211/ bigdata-2:/home
scp -r jdk1.8.0_211/ bigdata-3:/home
scp -r jdk1.8.0_211/ bigdata-4:/home
b) 设置环境变量:
vim /etc/profile
c) 添加如下内容:
export JAVA_HOME=/home/jdk1.8.0_211
export JRE_HOME= J A V A H O M E / j r e e x p o r t C L A S S P A T H = . : {JAVA_HOME}/jre export CLASSPATH=.: JAVAHOME/jreexportCLASSPATH=.:{JAVA_HOME}/lib: J R E H O M E / l i b e x p o r t P A T H = {JRE_HOME}/lib export PATH= JREHOME/libexportPATH={JAVA_HOME}/bin:$PATH
d) 生效:
source /etc/profile
e) 验证:
java -version
3.3. Zookeeper组件部署
下载安装介质:
https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/stable/apache-zookeeper-3.5.5-bin.tar.gz
解压缩:
tar -xzvf apache-zookeeper-3.5.5-bin.tar.gz -C /home
mv apache-zookeeper-3.5.5-bin/ zookeeper-3.5.5
创建数据目录和日志目录:
mkdir /home/zookeeper-3.5.5/data
mkdir /home/zookeeper-3.5.5/logs
配置:
执行:
vim /home/zookeeper-3.5.5/conf/zoo.cfg
填入以下内容:
tickTime=2000
dataDir=/home/zookeeper-3.5.5/data
dataLogDir=/home/zookeeper-3.5.5/logs
clientPort=2181
initLimit=5
syncLimit=2
server.1=bigdata-1.mid.neu.com:2888:3888
server.2=bigdata-2.mid.neu.com:2888:3888
server.3=bigdata-3.mid.neu.com:2888:3888
复制到其它节点(zookeeper的节点必须是奇数):
scp -r /home/zookeeper-3.5.5 10.10.195.54:/home
scp -r /home/zookeeper-3.5.5 10.10.195.55:/home
配置zookeeper服务器id:
touch /home/zookeeper-3.5.5/data/myid
vim /home/zookeeper-3.5.5/data/myid
填入1(注意,参考配置文件server.1、server.2、server.3的配置主机,配置不同的id,如2,3)
启动:
各节点执行:
/home/zookeeper-3.5.5/bin/zkServer.sh start
检查状态:
/home/zookeeper-3.5.5/bin/zkServer.sh status
3.4. Hadoop分布式集群部署
下载安装介质:
https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.1.2/hadoop-3.1.2.tar.gz
解压缩:
tar -xzvf hadoop-3.1.2.tar.gz -C /home
设置环境变量:
执行:
vim /etc/profile
添加如下内容:
export HADOOP_HOME=/home/hadoop-3.1.2
export PATH= P A T H : PATH: PATH:HADOOP_HOME/bin
生效:
source /etc/profile
创建存储目录:
mkdir -p /home/hadoop-3.1.2/data/tmp
mkdir -p /home/hadoop-3.1.2/data/namenode
mkdir -p /home/hadoop-3.1.2/data/datanode
mkdir -p /home/hadoop-3.1.2/data/journal
修改配置文件:
a) 进入hadoop配置目录:
cd /home/hadoop-3.1.2/etc/Hadoop
b) 修改hadoop环境变量脚本:
执行:
vim hadoop-env.sh
添加如下内容:
export JAVA_HOME=/home/jdk1.8.0_211
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export HDFS_DATANODE_SECURE_USER=root
export YARN_NODEMANAGER_USER=root
export HADOOP_SHELL_EXECNAME=root
export HDFS_ZKFC_USER=root
export HDFS_JOURNALNODE_USER=root
c) 修改hadoop核心配置文件:
执行:
vim core-site.xml
修改为内容:
fs.defaultFS
hdfs://hadoop-cluster
hadoop.tmp.dir
/home/hadoop-3.1.2/data/tmp
ha.zookeeper.quorum
bigdata-1.mid.neu.com:2181,bigdata-2.mid.neu.com:2181,bigdata-3.mid.neu.com:2181
hadoop.proxyuser.root.hosts
hadoop.proxyuser.root.groups
d) 修改hdfs配置文件:
执行:
vim hdfs-site.xml
修改为如下内容:
dfs.nameservices
hadoop-cluster
dfs.ha.namenodes.hadoop-cluster
nn01,nn02
dfs.namenode.rpc-address.hadoop-cluster.nn01
bigdata-1.mid.neu.com:9000
dfs.namenode.rpc-address.hadoop-cluster.nn02
bigdata-2.mid.neu.com:9000
dfs.namenode.http-address.hadoop-cluster.nn01
bigdata-1.mid.neu.com:50070
dfs.namenode.http-address.hadoop-cluster.nn02
bigdata-2.mid.neu.com:50070
dfs.namenode.shared.edits.dir
qjournal://bigdata-1.mid.neu.com:8485;bigdata-2.mid.neu.com:8485;bigdata-3.mid.neu.com:8485/hadoop-cluster
dfs.client.failover.proxy.provider.hadoop-cluster
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
dfs.permissions.enabled
false
dfs.support.append
true
dfs.replication
3
dfs.namenode.name.dir
/home/hadoop-3.1.2/data/namenode
dfs.datanode.data.dir
/home/hadoop-3.1.2/data/datanode
dfs.journalnode.edits.dir
/home/hadoop-3.1.2/data/journal
dfs.ha.automatic-failover.enabled
true
dfs.webhdfs.enabled
true
dfs.ha.fencing.ssh.connect-timeout
30000
dfs.ha.fencing.ssh.private-key-files
/root/.ssh/id_rsa
dfs.ha.fencing.methods
sshfence
shell(/bin/true)
e) 修改mapreduce配置文件:
执行:
vim mapred-site.xml
修改如下内容:
mapreduce.framework.name
yarn
f) 修改yarn配置文件:
执行:
vim yarn-site.xml
修改如下内容:
yarn.resourcemanager.ha.enabled
true
yarn.resourcemanager.cluster-id
yarn-cluster
yarn.resourcemanager.ha.rm-ids
rm1,rm2
yarn.resourcemanager.hostname.rm1
bigdata-1.mid.neu.com
yarn.resourcemanager.hostname.rm2
bigdata-2.mid.neu.com
yarn.resourcemanager.zk-address
bigdata-1.mid.neu.com:2181,bigdata-2.mid.neu.com:2181,bigdata-3.mid.neu.com:2181
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.log-aggregation-enable
true
yarn.log-aggregation.retain-seconds
86400
yarn.resourcemanager.recovery.enabled
true
yarn.resourcemanager.store.class
org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore
yarn.nodemanager.vmem-check-enabled
false
yarn.nodemanager.localizer.fetch.thread-count
10
yarn.scheduler.capacity.maximum-am-resource-percent
0.6
g) 修改主从节点配置:
执行:
vim /home/hadoop-3.1.2/etc/hadoop/workers
添加:
bigdata-1.mid.neu.com
bigdata-2.mid.neu.com
bigdata-3.mid.neu.com
bigdata-4.mid.neu.com
从主节点复制hadoop目录到其它节点:
scp -r /home/hadoop-3.1.2/ 10.10.195.54:/home
scp -r /home/hadoop-3.1.2/ 10.10.195.55:/home
scp -r /home/hadoop-3.1.2/ 10.10.195.55:/home
配置其它节点环境变量:
vim /etc/profile
添加如下内容:
export HADOOP_HOME=/home/hadoop-3.1.2
export PATH= P A T H : PATH: PATH:HADOOP_HOME/bin
生效:
source /etc/profile
启动journalnode:
按照规划,在bigdata-1.mid.neu.com、bigdata-2.mid.neu.com、bigdata-3.mid.neu.com节点启动journalnode。
/home/hadoop-3.1.2/bin/hdfs --daemon start journalnode
格式化zookeeper:
在任意namenode节点执行,这里为bigdata-1.mid.neu.com。
/home/hadoop-3.1.2/bin/hdfs zkfc -formatZK -force
格式化主namenode节点:
在bigdata-1.mid.neu.com节点上执行
/home/hadoop-3.1.2/bin/hdfs namenode -format -force
启动主namenode节点:
在bigdata-1.mid.neu.com节点上执行
/home/hadoop-3.1.2/bin/hdfs --daemon start namenode
启动zkfc节点:
按照规划,在bigdata-1.mid.neu.com和bigdata-2.mid.neu.com节点上执行。
/home/hadoop-3.1.2/bin/hdfs --daemon start zkfc
格式化备namenode节点:
在bigdata-2.mid.neu.com节点上执行。
/home/hadoop-3.1.2/bin/hdfs namenode -bootstrapStandby -force
启动备namenode节点:
在bigdata-2.mid.neu.com节点上执行
/home/hadoop-3.1.2/bin/hdfs --daemon start namenode
启动datanode节点:
在所有worker节点上执行:
/home/hadoop-3.1.2/bin/hdfs --daemon start datanode
启动resourcemanager节点:
按照规划,在bigdata-1.mid.neu.com和bigdata-2.mid.neu.com节点上执行
/home/hadoop-3.1.2/bin/yarn --daemon start resourcemanager
启动nodemanager节点:
在所有worker节点上执行:
/home/hadoop-3.1.2/bin/yarn --daemon start nodemanager
验证:
执行:
jps
观察内容:
NameNode
DataNode
ResourceManager
NodeManager
DFSZKFailoverController
JournalNode
3.5. Kafka分布式集群部署
解压缩:
tar -xzvf kafka_2.12-2.3.0.tar.gz -C /home
调整配置文件:
/home/kafka_2.12-2.3.0/config/server.properties
调整:
broker.id=1
log.dirs=/home/kafka_2.12-2.3.0/logs/kafka-logs
zookeeper.connect=bigdata-1.mid.neu.com:2181,bigdata-2.mid.neu.com:2181,bigdata-3.mid.neu.com:2181
需要注意:broker.id不同服务器是不一样的,如bigdata-1.mid.neu.com为1,bigdata-2.mid.neu.com为2,bigdata-3.mid.neu.com为3。
3.6. Flink分布式集群部署
解压缩:
tar -xzvf flink-1.10.0-bin-scala_2.12.tar -C /home
调整配置文件:
这里以flink on yarn为例:
调整文件:
/home/kafka_2.12-2.3.0/conf/flink-conf.yaml
调整:
high-availability: zookeeper
high-availability.storageDir: hdfs://Hadoop-cluster/flink/ha/
high-availability.zookeeper.quorum: bigdata-1.mid.neu.com:2181,bigdata-2.mid.neu.com:2181,bigdata-3.mid.neu.com:2181
state.backend: filesystem
state.checkpoints.dir: hdfs://hadoop-cluster/flink-checkpoints
state.savepoints.dir: hdfs://hadoop-cluster/flink-savepoints
3.7. clickhouse分布式集群部署:
安装:
rpm -ivh clickhouse-common-static-20.1.6.30-2.x86_64.rpm
rpm -ivh clickhouse-server-20.1.6.30-2.noarch.rpm
rpm -ivh clickhouse-client-20.1.6.30-2.noarch.rpm
修改配置:
vim /etc/clickhouse-server/config.xml
修改:
启动:
systemctl start clickhouse-server
附录A:大数据组件原生web管理系统地址整理:
组件 Web管理系统地址
HDFS http://10.10.195.53:50070
YARN http://10.10.195.53:8088
HBASE http://10.10.195.53:16010
注意:以上端口都不是固定的,可以在相应的配置文件中配置。