主机名 |
Zookeeper |
NameNode |
Resource Manager
|
DFSZK Failover Controller |
JournalNode | DataNode | HMaster | NodeManager | HRegionServer |
h1 | 是 | 是 | 是 | 是 | 是 | 是 | |||
h2 | 是 | 是 | 是 | 是 | 是 | 是 | |||
h3 | 是 | 是 | 是 | 是 | 是 | ||||
h4 | 是 | 是 | 是 |
版本说明:
JDK:1.8+
Zookeeper:3.1.4
Hadoop:3.1.2
Hbase:2.1.3
二、 基本环境设置1、 安装JDK(所有节点)
# tar -zxvf jdk软件包 指定目录示例:# tar -zxvf jdk1.8.0_171.tar.gz /usr/local/software/
2、 配置环境变量
# vim /etc/profile最后面添加: JAVA_HOME=/usr/local/software/jdk1.8.0_171PATH=$JAVA_HOME/bin:$PATHCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport JAVA_HOME PATH
3、 是环境变量生效
# source /etc/profile
4、 检查java配置是否成功
# java -versionjava version "1.8.0_171"Java(TM) SE Runtime Environment (build 1.8.0_171-b11)Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
5、 关闭防火墙
# 关闭防火墙# systemctl stop firewalld# 开机禁用# systemctl disable firewalld
6、 禁用SELinux
# 临时关闭# setenforce 0# 开机禁用# vim /etc/selinux/config# 将SELINUX=enforcing改为SELINUX=disabled SELINUX=disabled# 查看状态# getenforceDisabled# /usr/sbin/sestatus -vSELinux status: disabled
7、 配置hosts
# 修改hosts# vim /etc/hosts# 添加如下内容# 注意:已经修改了主机名称分别为h1 h2 h3 h4# 最后面的 0.0.0.0 对应相应的主机,如没配置,会在namenode格式化的时候出错192.168.247.11 h1192.168.247.12 h2192.168.247.13 h3192.168.247.14 h40.0.0.0 h1
8、 配置免密登录
# 生成公钥和私钥# ssh-keygen# 拷贝公钥到其它节点# ssh-copy-id root@h1# 修改主机名,并执行多次# 测试是否成功,不用输入密码,则表示成功# ssh root@h1
至此,基本环境配置完毕
三、 安装zookeeper集群(h1 h2 h3)节点1、 解压软件包到software目录下
# tar -zxvf zookeeper-3.4.13.tar.gz /usr/local/software/
2、 配置环境变量
参考JDK环境变量的配置
3、 进入到zookeeper安装目录,并拷贝conf目录下zoo_sample.cfg为zoo.cfg
# cp zoo_sample.cfg zoo.cfg
4、 编辑zoo.cfg
# 修改dataDir目录dataDir=/usr/local/software/zookeeper-3.4.13/data# 添加如下内容server.1=h1:2888:3888server.2=h2:2888:3888server.3=h3:2888:3888
5、 在zookeeper目录下,创建data目录
# mkdir data
6、 在data目录下创建myid文件,并分别添加1、2、3三个数字。示例如下
# 在h1下面创建myid# vim myid# 添加数字11# 保存退出:wq
h2、h3一样,分别为2和3
至此zookeeper集群配置完毕
四、 配置hadoop集群(h1 h2 h3 h4)节点1、 同样,解压软件包、并配置环境变量
过程:略......
2、 进入到hadoop目录下的etc/hadoop
# cd etc/hadoop
3、 编辑hadoop-env.sh
# 主要是配置JAVA_HOME目录,注意不要使用${JAVA_HOME},如下# vim hadoop-env.shexport JAVA_HOME=/usr/local/software/jdk1.8.0_171
4、 编辑core-site.xml
# vim core-site.xml fs.defaultFS hdfs://hadoop-cluster 集群名称 hadoop.tmp.dir /usr/local/software/hadoop-3.1.2/tmp 节点上本地的hadoop临时文件夹 ha.zookeeper.quorum h1:2181,h2:2181,h3:2181 zookeeper集群
5、 修改hdfs-site.xml
# vim hdfs-site.xml dfs.nameservices hadoop-cluster 集群名称 dfs.ha.namenodes.hadoop-cluster nn01,nn02 namenode名称,随便,可以是nn1,nn2,注意和下面保持一致 dfs.namenode.rpc-address.hadoop-cluster.nn01 h1:9000 nn01的RPC通信地址,注意务必是9000,不要用8020之类的,否则ui会有点问题 dfs.namenode.rpc-address.hadoop-cluster.nn02 h2:9000 同上 dfs.namenode.http-address.hadoop-cluster.nn01 h1:9870 ui地址及端口(原先是50070),随便 dfs.namenode.http-address.hadoop-cluster.nn02 h2:9870 同上 dfs.namenode.shared.edits.dir qjournal://h1:8485;h2:8485;h3:8485/hadoop-cluster 指定NameNode的edits元数据的共享存储位置。也就是JournalNode列表该url的配置格式:qjournal://host1:port1;host2:port2;host3:port3/journalId;journalId推荐使用nameservice,默认端口号是:8485 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 1 副本数量 dfs.namenode.name.dir /usr/local/software/hadoop-3.1.2/hdfs/namenode namenode数据存放目录 dfs.datanode.data.dir /usr/local/software/hadoop-3.1.2/hdfs/datanode datanode数据存放目录 dfs.journalnode.edits.dir /usr/local/software/hadoop-3.1.2/hdfs/journalnode journalnode数据存放目录 dfs.ha.automatic-failover.enabled true 开启NameNode失败自动切换 dfs.webhdfs.enabled true 启用webhdfs dfs.ha.fencing.ssh.connect-timeout 30000 配置sshfence隔离机制超时时间 dfs.ha.fencing.ssh.private-key-files /root/.ssh/id_rsa 使用sshfence隔离机制时需要ssh免登陆 dfs.ha.fencing.methods sshfence shell(/bin/true) 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行
5、 配置mapred-site.xml
# vim mapred-site.xml mapreduce.framework.name yarn 指定mr框架为yarn方式
6、 配置yarn-site.xml
# vim yarn-site.xml yarn.resourcemanager.ha.enabled true 开启RM高可用 yarn.resourcemanager.cluster-id yrc 指定RM的cluster id yarn.resourcemanager.ha.rm-ids rm1,rm2 指定RM的名字 yarn.resourcemanager.hostname.rm1 h1 指定RM的地址 yarn.resourcemanager.hostname.rm2 h2 指定RM的地址 yarn.resourcemanager.zk-address h1:2181,h2:2181,h3:2181 zookeeper集群 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 制定resourcemanager的状态信息存储在zookeeper集群上
7、 编辑workers文件,以前是slaves文件
# vim workers#去掉localhost,并添加h3h4
8、 编辑sbin目录下的start-dfs.sh 和stop-dfs.sh并添加如下内容
# vim start-dfs.shHDFS_DATANODE_USER=rootHDFS_DATANODE_SECURE_USER=hdfsHDFS_ZKFC_USER=rootHDFS_JOURNALNODE_USER=rootHDFS_NAMENODE_USER=rootHDFS_SECONDARYNAMENODE_USER=root
9、 编辑sbin目录下的start-yarn.sh和stop-yarn.sh并添加如下内容
# vim start-yarn.shYARN_RESOURCEMANAGER_USER=rootHADOOP_SECURE_DN_USER=yarnYARN_NODEMANAGER_USER=root
至此,hadoop集群配置完毕
五、 配置hbase(h1 h2 h3 h4)节点1、 解压hbase软件包,并配置环境变量
过程:略......
2、 进入到hbase目录的conf目录中
# cd conf
3、 编辑hbase-env.sh
# vim hbase-env.sh# 主要是配置JAVA_HOME,同hadoop-env.shexport JAVA_HOME=/usr/local/software/jdk1.8.0_171# 可选export HBASE_CLASSPATH=$HBASE_CLASSPATH:/usr/local/software/hadoop-3.1.2/etc/hadoop# 关闭自身zookeeper,采用外部的zookeeperexport HBASE_MANAGES_ZK=false
4、 配置hbase-site.xml
# vim hbase-site.xml hbase.rootdir hdfs://hadoop-cluster/hbase hadoop集群名称 hbase.zookeeper.quorum h1,h2,h3 zookeeper集群 hbase.cluster.distributed true 是否是完全分布式 hbase.zookeeper.property.clientPort 2181 hbase.unsafe.stream.capability.enforce false 完全分布式式必须为false
5、 编辑regionservers
# vim regionserversh3h4
6、 将hdfs-site.xml映射到conf下hdfs-site.xml
# ln -s /usr/local/software/hadoop-3.1.2/etc/hadoop/hdfs-site.xml ./hdfs-site.xml
7、 配置Hmaster高可用
# vim backup-mastersh2
至此Hbase配置完毕
六、 启动由于已经配置了环境变量,所以任意位置执行以下命令都可以
1、 启动zookeeper(h1 h2 h3)节点
# 启动# zkServer.sh start# 查看状态# zkServer.sh statusZooKeeper JMX enabled by defaultUsing config: /usr/local/software/zookeeper-3.4.13/bin/../conf/zoo.cfgMode: follower
2、启动journalnode(h1 h2 h3)节点
# hdfs --daemon start journalnode# 或者(不推荐)# hadoop-daemon.sh start journalnode
3、 格式化zkfc和namenode(h1)节点
# 格式化zkfc# hdfs zkfc -formatZK# 格式化namenode(如果在hosts没有配置 0.0.0.0 主机名在这一步的时候可能会报错)# hdfs name -format
4、 启动hadoop
# 下面这个命令会同时启动所有服务(当然您也可以单独启动服务)# start-all.sh
5、 启动另一个namenode
# 同步fsimage# hdfs namenode -bootstrapStandby# 启动namenode# hdfs --daemon.sh start namenode
6、 启动hbase
# 注意,要在hadoop已经完全启动后再启动# start-hbase.sh 七、 最终效果
1、 jps查看所有进程效果
2、 UI效果
hadoop地址:IP:9870
Yarn地址:IP:8088
HBase地址:IP:16010
ZK元数据
完
作者:zhangjunli