大数据集群为了保证故障转移,通常经过zookeeper来总体协调管理,当节点数大于等于6个时推荐使用,接下来描述一下Hbase集群部署在zookeeper上的过程:java
安装Hbase以前首先系统应该作通用的集群环境准备工做,这些是必须的:node
一、集群中主机名必须正确配置,最好有实际意义;而且主机名都在hosts文件中对应主机IP,一一对应,不可缺乏shell
这里集群有6台服务器:bigdata1,bigdata2,bigdata3,bigdata4,bigdata5,bigdata6apache
这里是3台主机,分别对应bootstrap
二、JDK环境正确安装vim
三、集群中每台机器关闭防火墙,保证通讯畅通浏览器
四、配置集群间ssh免密登陆服务器
五、集群ntp服务开启,保证时间同步(这一步很是重要,不然hbase启动会失败)ssh
六、zookeeper正确安装ide
七、Hadoop HDFS服务开启
这里预约zookeeper的地址为:bigdata2,bigdata3,bigdata4,bigdata5,bigdata6 5个zookeeper节点
hadoop namenode为bigdata1(主),bigdata2(备用),其他4个为datanode
hbase Master为bigdata1,其他为存储节点
基于以上配置结合集群高可用配置,构成一个性能比较好的集群配置方式
前面6步都配置好的基础上,首先配置Hadoop集群,在bigdata1上作配置操做
首先解压hadoop,并安装至指定目录:
tar -xvzf hadoop-2.6.0.tar.gz mkdir /bigdata/hadoop mv hadoop-2.6.0 /bigdata/hadoop cd /bigdata/hadoop/hadoop-2.6.0
就是简单的释放,而后为了方即可以将HADOOP_HOME添加至环境变量
配置hadoop须要编辑如下几个配置文件:
hadoop-env.sh core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml slaves
一、编辑hadoop-env.sh
修改export JAVA_HOME=${JAVA_HOME}为本身的实际安装位置
这里是export JAVA_HOME=/usr/local/java/jdk1.8.0_73
二、编辑core-site.xml,在configuration标签中间添加以下代码,
1 <property> 2 <name>fs.defaultFS</name> 3 <value>hdfs://hadoopha</value> 4 </property> 5 <property> 6 <name>hadoop.tmp.dir</name> 7 <value>/bigdata/hadoop/tmp</value> 8 </property> 9 <property> 10 <name>ha.zookeeper.quorum</name> 11 <value>bigdata2:2181,bigdata3:2181,bigdata4:2181,bigdata5:2181,bigdata6:2181</value> 12 </property>
三、编辑hdfs-site.xml ,添加以下代码:
1 <property> 2 <name>dfs.replication</name> 3 <value>2</value> 4 </property> 5 <property> 6 <name>dfs.nameservices</name> 7 <!--这里和core-site中配置保持一致--> 8 <value>hadoopha</value> 9 </property> 10 11 <property> 12 <name>dfs.ha.namenodes.hadoopha</name> 13 <value>bigdata1,bigdata2</value> 14 </property> 15 <property> 16 <name>dfs.namenode.rpc-address.hadoopha.bigdata1</name> 17 <value>bigdata1:8020</value> 18 </property> 19 <property> 20 <name>dfs.namenode.http-address.hadoopha.bigdata1</name> 21 <value>bigdata1:50070</value> 22 </property> 23 <property> 24 <name>dfs.namenode.rpc-address.hadoopha.bigdata2</name> 25 <value>bigdata2:8020</value> 26 </property> 27 <property> 28 <name>dfs.namenode.http-address.hadoopha.bigdata2</name> 29 <value>bigdata2:50070</value> 30 </property> 31 32 <property> 33 <name>dfs.namenode.name.dir</name> 34 <value>file:///bigdata/hadoop/hdfs/name</value> 35 </property> 36 <property> 37 <name>dfs.datanode.data.dir</name> 38 <value>file:///bigdata/hadoop/hdfs/data</value> 39 </property> 40 <!-- 这个地方是为Hbase的专用配置,最小为4096,表示同时处理文件的上限,不配置会报错 --> 41 <property> 42 <name>dfs.datanode.max.xcievers</name> 43 <value>4096</value> 44 </property> 45 46 <!--提供journal的服务器列表,通常为奇数个,这里为3个--> 47 <property> 48 <name>dfs.namenode.shared.edits.dir</name> 49 <value>qjournal://bigdata3:8485;bigdata4:8485;bigdata5:8485/hadoopha</value> 50 </property> 51 <property> 52 <name>dfs.ha.automatic-failover.enabled</name> 53 <value>true</value> 54 </property> 55 56 <property> 57 <name>dfs.client.failover.proxy.provider.hadoopha</name> 58 <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> 59 </property> 60 <property> 61 <name>dfs.journalnode.edits.dir</name> 62 <value>/bigdata/hadoop/hdfs/journal</value> 63 </property> 64 65 <property> 66 <name>dfs.ha.fencing.methods</name> 67 <value>sshfence</value> 68 </property> 69 <property> 70 <name>dfs.ha.fencing.ssh.connect-timeout</name> 71 <value>5000</value> 72 </property> 73 74 <!--配置ssh密钥存放位置--> 75 <property> 76 <name>dfs.ha.fencing.ssh.private-key-files</name> 77 <value>/root/.ssh/id_dsa</value> 78 </property>
其中配置的注释说明要注意一下
四、编辑mapred-site.xml,这个不用配置
五、编辑yarn-site.xml,这个也不用配置
六、编辑slaves,添加datanode节点
bigdata3
bigdata4
bigdata5
bigdata6
这些都保存完毕,将/bigdata/下的hadoop目录总体发送至集群中其余主机,其余主机应该事先创建好bigdata目录
scp -r /bigdata/hadoop bigdata2:/bigdata scp -r /bigdata/hadoop bigdata3:/bigdata scp -r /bigdata/hadoop bigdata4:/bigdata scp -r /bigdata/hadoop bigdata5:/bigdata scp -r /bigdata/hadoop bigdata6:/bigdata
而后在配置jouralnode的服务器上启动jouralnode服务,这里是bigdata3,4,5
sbin/hadoop-daemon.sh start journalnode
而后在bigdata1上格式化zookeeper节点:
bin/hdfs zkfc -formatZK
在其中一台namenode上格式化文件系统并启动namenode,这里是bigdata1:
bin/hdfs namenode -format sbin/hadoop-daemon.sh start namenode
在另一台namenode,bigdata2上同步元数据:
bin/hdfs namenode -bootstrapStandby sbin/hadoop-daemon.sh start namenode
而后启动hdfs服务:
sbin/start-dfs.sh
启动完成以后,执行 jps 命令,在主节点能够看到NameNode和DFSZKFailoverController进程;其余节点能够看到DataNode进程
如今经过浏览器能够打开相应的管理界面,以bigdata1的IP访问:
http://192.168.0.187:50070
到这里hadoop hdfs就部署完成了,而后开始部署HBase,这里使用的版本为:hbase-0.98.18-hadoop2-bin.tar.gz
和释放hadoop包同样将hbase释放到对应的目录并进入,这里是:/bigdata/hbase/hbase-0.98.18-hadoop2
首先编辑配置文件: vim conf/hbase-env.sh
去掉JAVA_HOME前面的注释,改成本身实际的JDK安装路径,和配置hadoop相似
而后,去掉export HBASE_MANAGES_ZK=true前面的注释并改成export HBASE_MANAGES_ZK=false,配置不让HBase管理Zookeeper
配置完这两项以后,保存退出
编辑文件 vim conf/hbase-site.xml 在configuration标签之间加入以下配置:
<!-- 指定HBase在HDFS上面建立的目录名hbase --> <property> <name>hbase.rootdir</name> <value>hdfs://hadoopha/hbase</value> </property> <property> <name>hbase.master</name> <value>60000</value> </property> <!-- 开启集群运行方式 --> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.tmp.dir</name> <value>/bigdata/hbase/tmp</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>bigdata2,bigdata3,bigdata4,bigdata5,bigdata6</value> </property>
分别将hadoop配置下的core-site.xml和hdfs-site.xml复制或者作软连接到hbase配置目录下:
cp /bigdata/hadoop/hadoop-2.6.0/etc/hadoop/core-site.xml conf/ cp /bigdata/hadoop/hadoop-2.6.0/etc/hadoop/hdfs-site.xml conf/
执行 vim conf/regionservers 编辑运行regionserver存储服务的Hbase节点,就至关于hadoop slaves中的DataNode节点
这里是bigdata2~bigdata5
保存以后,配置完毕,将hbase发送至其余数据节点:
scp -r /bigdata/hbase/ bigdata2:/bigdata/ scp -r /bigdata/hbase/ bigdata3:/bigdata/ scp -r /bigdata/hbase/ bigdata4:/bigdata/ scp -r /bigdata/hbase/ bigdata5:/bigdata/ scp -r /bigdata/hbase/ bigdata6:/bigdata/
而后在bigdata1启动Hbase Master
bin/hbase-daemon.sh start master
启动成功,在bigdata1会增长进程:HMaster
而后在bigdata2启动regionserver进程,其他4台集群会跟随启动
bin/hbase-daemons.sh start regionserver
这里注意跟随启动时,bigdata2到全部机器ssh确保直接进入,若是配置好的免密也最好提早都进一遍,避免须要输入yes而致使错误
同时集群的时间必定同步,不然hbase会启动失败出现NoNode Error的异常
在bigdata2到bigdata6会增长进程:HRegionServer
到这里HBase就部署完毕,而且包含zookeeper集群高可用配置
执行命令: /bigdata/hadoop/hadoop-2.6.0/bin/hdfs dfs -ls / 能够查看hbase是否在HDFS文件系统建立成功
看到/hbase节点表示建立成功
而后执行: bin/hbase shell 能够进入Hbase管理界面
输入 status 查看状态
返回状态,表示HBase能够正常使用
输入 quit 能够退出管理,回到命令行
访问浏览器http://ip:60010能够打开Hbase管理界面