所需组件
zookeeper
版本:3.4.10
下载链接:
http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
java openjdk/oracle_jdk
版本:oracle_jdk-1.8
下载链接:
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
hadoop
版本:2.8.1
下载链接:
https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.8.1/hadoop-2.8.1.tar.gz
hbase
版本:1.3.1
下载链接:
https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/1.3.1/hbase-1.3.1-bin.tar.gz
环境配置(所有节点均君一样的操作)
关闭防火墙,Selinux
hosts文件配置
$ vim /etc/hosts
10.39.10.34 hbase-1
10.39.10.35 hbase-2
10.39.21.19 hbase-3
将所有软件包解压到每个节点的/opt目录下,并安装Jdk。
$ tar xvf hadoop-2.8.1.tar.gz -C /opt
$ tar xvf hbase-1.3.1-bin.tar.gz -C /opt
$ tar xvf zookeeper-3.4.10.tar.gz -C /opt
$ yum install ./jdk-8u144-linux-x64.rpm
配置环境变量
$ vim /etc/profile.d/hbase.sh
JAVA_HOME=/usr/java/jdk1.8.0_144/jre
ZOOKEEPER_HOME=/opt/zookeeper-3.4.10
HADOOP_HOME=/opt/hadoop-2.8.1
HBASE_HOME=/opt/hbase-1.3.1
PATH=$PATH:$HBASE_HOME/bin:$HADOOP_HOME/bin:$ZOOKEEPER_HOME/bin:$JAVA_HOME/bin:
加载环境变量
$ . /etc/profile.d/hbase.sh
安装步骤
安装zookeeper
#配置主节点zookeeper配置
[root@hbase-1 ~]$ ssh hbase-1
[root@hbase-1 ~]$ cp /opt/zookeeper-3.4.10/conf/zoo_sample.cfg /opt/zookeeper-3.4.10/conf/zoo.cfg
[root@hbase-1 ~]$ vim /opt/zookeeper-3.4.10/conf/zoo.cfg
dataDir=/opt/data/zookeeper (数据存放目录)
server.1=hbase-1:2888:3888 (主机名:信息交换端口:节点投票端口)
server.2=hbase-2:2888:3888
server.3=hbase-3:2888:3888
[root@hbase-1 ~]$ mkdir -p /opt/data/zookeeper
[root@hbase-1 ~]$ echo 1 > /opt/data/zookeeper/myid
#将配置好的zoo.cfg文件发送到hbase-2与hbase-3上的/opt/zookeeper-3.4.10/conf目录下
scp /opt/zookeeper-3.4.10/conf/zoo.cfg hbase-2:/opt/zookeeper-3.4.10/conf
scp /opt/zookeeper-3.4.10/conf/zoo.cfg hbase-3:/opt/zookeeper-3.4.10/conf
#在hbase-2上执行
[root@hbase-2 ~]$ mkdir -p /opt/data/zookeeper
[root@hbase-2 ~]$ echo 2 > /opt/data/zookeeper/myid
#在hbase-3上执行
[root@hbase-3 ~]$ mkdir -p /opt/data/zookeeper
[root@hbase-3 ~]$ echo 3 > /opt/data/zookeeper/myid
#开启zookeeper服务(三个节点都需要运行)
$ zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.10/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
#查看zookeeper状态(三个节点都需要运行)
$ zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower
zookeeper角色
zkServer.sh status 会显示zookeeper 状态
Mode: leader
这里的Mode: leader 和follower
一个集群中只有leader
leader 领导者,用于负责进行投票的发起决议,更新系统状态
follower 跟随者 用于接受客户端请求并想客户端返回结果,在选主过程中参与投票
配置参数详解
tickTime 这个时间是作为zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是说每个tickTime 时间就会发送一个心跳。
initLimit 这个配置项是用来配置zookeeper接受客户端初始化连接时最长能忍受多少个心跳时间间隔数。
当已经超过10个心跳的时间(tickTime) 长度后zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败,总的时间长度就是10*2000=20秒
syncLimit 这个配置项标识leader 与follower 之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime 的长度,总的时间长度是5*2000=10秒
dataDir 保存数据目录
clientPort 端口,这个端口是客户端连接zookeeper服务器端口,zookeeper 会监听这个端口接受客户端访问请求
server.n=B:C:D 的n是一个数字,表示这个是第几号服务器,B是这个服务器的IP地址,C第一个端口用来集群成员的信息交换,表示这个服务器与集群中的leader 服务器交换信息的端口,D是leader 挂掉时专门用来进行选举leader 所用的端口
配置hadoop
#配置主节点
[root@hbase-1 ~]$ cd /opt/hadoop-2.8.1/etc/hadoop/
[root@hbase-1 hadoop]$ vim hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_144/jre
[root@hbase-1 hadoop]$ vim hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/data/zookeeper/hadoopdata/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/data/zookeeper/hadoopdata/dfs/data</value>
</property>
</configuration>
[root@hbase-1 hadoop]$ vim core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hbase-1:9000</value>
<description>The name of the default file system</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/data/zookeeper/hadoopdata/tmp</value>
<description>A base for other temporary directories</description>
</property>
<property>
<name>hadoop.native.lib</name>
<value>true</value>
<description>Should native hadoop libraries, if present, be used.</description>
</property>
</configuration>
[root@hbase-1 hadoop]$ vim mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
[root@hbase-1 hadoop]$ vim yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hbase-1</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
[root@hbase-1 hadoop]$ vim slaves
hbase-2
hbase-3
#初始化hdfs
[root@hbase-1 hadoop]$ hadoop namenode -format
[root@hbase-1 hadoop]$ hadoop datanode -format
#将所有文件复制到hbase-2,hbase-3中
[root@hbase-1 hadoop]$ scp * hbase-2:/opt/hadoop-2.8.1/etc/hadoop
[root@hbase-1 hadoop]$ scp * hbase-3:/opt/hadoop-2.8.1/etc/hadoop
#开启hadoop服务(仅在主节点执行即可)
[root@hbase-1 hadoop]$ cd /opt/hadoop-2.8.1/sbin
[root@hbase-1 sbin]$ ./start-all.sh
#查看主节点状态
[root@hbase-1 sbin]$ jps
1940 NameNode
1735 QuorumPeerMain
2139 SecondaryNameNode
2303 ResourceManager
4191 Jps
#查看从节点状态
[root@hbase-2 ~]$ jps
1732 QuorumPeerMain
2134 NodeManager
3563 Jps
1998 DataNode
[root@hbase-3 sbin]$ jps
3492 Jps
1733 QuorumPeerMain
2007 DataNode
2138 NodeManager
安装hbase
#进入hbase目录
[root@hbase-1 ~]$ cd /opt/hbase-1.3.1/conf
#注释这两行参数
#export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
#export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
#添加这两行参数
export JAVA_HOME=/usr/java/jdk1.8.0_144/jre
export HBASE_MANAGES_ZK=false
[root@hbase-1 conf]$ vim hbase-site.xml
<configuration>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://hbase-1:9000/hbase</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hbase-1,hbase-2,hbase-3</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/opt/data/zookeeper/data</value>
</property>
</configuration>
[root@hbase-1 conf]$ vim regionservers
hbase-2
hbase-3
#启动hbase服务
[root@hbase-1 conf]$ start-hbase.sh
#查看hbase服务状态
[root@hbase-1 conf]$ jps
2736 HMaster
#查看hbase集群状态
[root@hbase-1 conf]$ hbase shell
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/hbase-1.3.1/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.cla
ss]SLF4J: Found binding in [jar:file:/opt/hadoop-2.8.1/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/
StaticLoggerBinder.class]SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 1.3.1, r930b9a55528fe45d8edce7af42fef2d35e77677a, Thu Apr 6 19:36:54 PDT 2017
hbase(main):001:0> status
1 active master, 0 backup masters, 2 servers, 0 dead, 1.0000 average load
hadoop Web-UI界面
http://hbase-1:8088
![image]()
hbase Web-UI界面
http://hbase-1:16010
![image]()