说明:
本文档实现hdfs的HA功能,其中zookeeper的配置不变,hbase的配置略作修改,同时启用backup master
主要是修改hadoop的配置,相关内容:
参见:1-0三台PC集群的搭建(noHA)。
实现HDFS的HA的搭建,
部署目录:/opt/hadoop-2.2.0
(1)创建目录(变化)
Namenode节点(master1,slave1):
mkdir –p /data/hdfs/nn
Journal节点(master1,slave1,slave2)
mkdir –p/data/journal
所有hadoop(master1,slave1-2)节点:
mkdir –p/data/tmp_hadoop /data/hdfs/dn /data/log/hadoop-hdfs /data/log/hadoop-yarn /data/log/hadoop-mapred /data/yarn/local /data/yarn/logs
(2)环境变量
vi/etc/profile.d/hadoop.sh
添加
#set hadoop environment
export HADOOP_HOME=/opt/hadoop-2.2.0
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
(3)配置文件修改
1)配置masters(变化)
#标识secondarynamendoe,这里采用了HA方案,这个配置缺省。
2) 配置slaves
#标识集群的datanode
master1
slave1
slave2
3) 配置hadoop-env.sh
export JAVA_HOME=/opt/jdk1.7.0_45
export HADOOP_LOG_DIR=/data/log/hadoop-hdfs
export YARN_LOG_DIR=/data/log/hadoop-yarn
export HADOOP_MAPRED_LOG_DIR=/data/log/hadoop-mapred
4) 配置yarn-env.sh
export JAVA_HOME=/opt/jdk1.7.0_45
5)编辑core-site.xml(变化)
6)编辑hdfs-site.xml(变化)
7)编辑yarn-site.xml
8)编辑mapred-site.xml
D)分发软件包到所有hadoop节点上
E)测试:
Step1:初始化:(all代表master1,slave1,slave2)
1)首先必须启动三台机子上的zookeeper
(all)zkServer.sh start
2)初始化zoookeeper(格式化znode)(在nn1,nn2中任意一台上进行都可以)
(nn1)bin /hdfs zkfc-formatZK
3)启动三台机子上的journalnode,
(all)hadoop-daemon.shstart journalnode
4)(在其中一个namenode上,这里选择nn1)
格式化 NameNode
(nn1)bin/ hadoopnamenode –format
然后在master1上启动namenode
(nn2)sbin/ hadoop-daemon.sh start namenode
5)然后复制该 NameNode的dfs.namenode.name.dir 目录的数据到另外一个 NameNode的同一目录中(可以scp)。(让 NN2 从 NN1 上拉取最新的 FSimage:)
(nn2) bin/hdfsnamenode -bootstrapStandby [-force | -nonInteractive]
启动nn2上的namenode
(nn2)sbin/hadoop-daemon.sh startnamenode
6)此刻nn1,nn2都是standby,可以去查看
master1:50070,和slave1:50070,
启动zkfc服务
(nn1)sbin/hadoop-daemon.shstart zkfc
(nn2)sbin/hadoop-daemon.shstart zkfc
7)人工切换(在nn1和nn2任意一台上进行)
bin /hdfshaadmin -failover nn1 nn2
(standby) (active)
8)在avtive上kill 掉namenode
刷新原先standbynamenode的网页,standby—active。
Step2:正常启动HA
(all)zkServer.sh start
(nn1或nn2):sbin/start-dfs.sh
启动YARN:(单独配置到master3上)
启动yarn(RM所在机器上,master3)
start-yarn.sh
访问slave2:8088查看RM
启动JobHistoryServer(JHS所在机器上,master4)
mr-jobhistory-daemon.sh start historyserver
访问slave1:19888查看JHS
a) 前提:Hadoop集群,zookeeper集群已搭建好。
下载hbase-0.96.0-hadoop2-bin.tar.gz
部署目录:/opt/hbase-0.96.0-hadoop2
b) Hbase节点上创建目录:
mkdir –p/data/hbase/logs
mkdir –p/data/hbase/tmp_hbase
c) 环境变量:
vi/etc/profile.d/java.sh (编辑文件)
#set HBase environment
export HBASE_HOME=/opt/hbase-0.96.0-hadoop2
export PATH=$PATH:$HBASE_HOME/bin
export HBASE_HEAPSIZE=4096
d) 修改最大文件句柄限制
HBase是数据库,会在同一时间使用很多的文件句柄。大多数linux系统使用的默认值1024是不能满足的,
(ubuntu为例)
gedit /etc/security/limits.conf
hadoop -nofile 32768
hadoop soft/hard nproc 32000
gedit /etc/pam.d/ common-session
session required pam_limits.so
e) 替换包
在分布式模式下,Hadoop版本必须和HBase下的版本一致。用你运行的分布式Hadoop版本jar文件替换HBaselib目录下的Hadoop jar文件,以避免版本不匹配问题。确认替换了集群中所有HBase下的jar文件。Hadoop版本不匹配问题有不同表现,但看起来都像挂掉了。(habse-0.96.0+hadoop-2.2.0,其中替换17个jar包)
1)启用backupHMaster
在conf下新建文件backup-masters,写入作为backupmaster的主机名,这里设定master1为主master,slave1为backup
slave1
2)修改/conf/regionservers文件,增加regionserver
master1
slave1
slave2
3)修改 /conf/hbase-env.sh
export JAVA_HOME=/opt/jdk1.7.0_45
export HBASE_CLASSPATH=/opt/hadoop-2.2.0/etc/hadoop
export HBASE_MANAGES_ZK=false
export HBASE_LOG_DIR=/data/hbase/logs
4)修改./conf/hbase-site.xml文件
5)分发软件包到所有hbase节点上
6)启动hbase
master1
bin/start-hbase.sh
访问 http://master1:60010
slave1:60010
测试:bin/hbase shell