1.Zookeeper安装配置
zookeeper的配置相对简单,配置原理同Hadoop相同,即在Master上安装配置完成后,scp到所有的Slave上。
1).复制解压zookeeper-3.4.6.tar.gz
用root用户登录,将zookeeper-3.4.6.tar.gz
拷贝到/usr
下,解压缩。
cp /usr/local/src/zookeeper-3.4.6.tar.gz /usr
cd /usr
tar zxvf zookeeper-3.4.6.tar.gz
chown -R hadoop:hadoop zookeeper
ll
ll
即可看到zookeeper的状态,如图所示:
2).配置在datanode节点建myid
退出root用户,在家目录hadoop用户下创建相关版本的zookeeper-3.4.6目录文件,并在该目录下创建data目录,用于存放myid
cd
mkdir zookeeper-3.4.6
mkdir zookeeper-3.4.6/data
vi myid
插入1,保存退出:wq
内容如下:
3).配置zoo.cfg
进入到zookeeper的配置文件目录下,将zoo_sample.cfg
改为zoo.cfg
,打开进行配置
cd /usr/zookeeper/conf/
mv zoo_sample.cfg zoo.cfg
vi zoo.cfg
在16行的dataDir设置为上一步的data路径
dataDir=/home/hadoop/zookeeper-3.4.6/data
在21行添加如下配置
server.1=Master.Hadoop:2888:3888
server.2=Slave1.Hadoop:2888:3888
server.3=Slave2.Hadoop:2888:3888
这里的server.id 对应myid中设置的数字
如:这里有三台机器装了zookeeper,那么对应的myid分别为:
Master.Hadoop 中的myid为1
Slave1.Hadoop 中的myid为2
Slave2.Hadoop 中的myid为3
将35行和39行的注释打开
autopurge.snapRetainCount=3
autopurge.purgeInterval=1
zoo.cfg配置完成,保存退出即可,如图所示:
4).将zookeeper发送到其他slave并修改权限
同hadoop的配置一样,将/usr
下的zookeeper
和/home/hadoop/zookeeper-3.4.6
文件分别发送到所有的Slave机器上,可发送到root用户。
scp -r /usr/zookeeper root@Slave1.Hadoop:/usr
scp -r /usr/zookeeper root@Slave2.Hadoop:/usr
scp -r /home/hadoop/zookeeper-3.4.6 hadoop@Slave1.Hadoop:/home/hadoop/
scp -r /home/hadoop/zookeeper-3.4.6 hadoop@Slave2.Hadoop:/home/hadoop/
发送完成后,分别root登录到Slave1和Slave2,修改权限和myid
cd /usr
chown -R hadoop:hadoop zookeepervi /home/hadoop/zookeeper-3.4.6/data/myid
将Slave1.Hadoop中的myid设置为2
将Slave2.Hadoop中的myid设置为3
5).开启Zookeeper服务
配置完成后,分别在装有zookeeper的三台机器上启动zookeeper
cd /usr/zookeeper/bin
./zkServer.sh start
jps
如果三台机器都有QuorumPeerMain
进程,则说明zookeeper启动成功。
6).查看Zookeeper服务状态
zookeeper通过选举机制来选出leader
和follower
,因此机器必须为奇数,偶数会出问题。相关的选举机制及其原理,请参照zookeeper原理
分别在三台机器上查看zookeeper状态
./zkServer.sh status
至此,zookeeper配置成功。
2.HBase安装配置
1.复制解压hbase-1.1.7-bin.tar.gz
root用户登录,将hbase-1.1.7-bin.tar.gz
拷贝到/usr
目录下,解压后,将hbase-1.1.7
重命名为hbase
,删除hbase-1.1.7-bin.tar.gz
包,给hbase
添加读权限。
cd /usr/loacl/src
ls
cp hbase-1.1.7-bin.tar.gz /usr/ #将hbase安装包拷贝到安装目录
cd /usr & ls
tar zxvf hbase-1.1.7-bin.tar.gz #解压缩
mv hbase-1.1.7 hbase #重命名
rm hbase-1.1.7-bin.tar.gz
chown -r hadoop:hadoop hbase #改权限
如下图操作:
接下来要进行配置,共需要配置三个文件:hbase-env.sh
hbase-site.xml
和 regionservers
.如图所示:
2.配置hbase-env.sh
hbase-env.sh
的配置有几个坑,第一个为HBASE_PID_DIR
,第二个为PermSize
设置问题,如果第一个不设置的话,在启动hbase的时候会出现一个错误提示
/usr/hbase/bin/hbase-daemon.sh:行213: /tmp/hbase-hadoop-master.pid: 权限不够
由于The directory where pid files are stored. /tmp by default.
默认存放hbase-hadoop-master.pid的目录为/tmp
,而这个目录为系统级目录,需要root权限,且每次系统重启后/tmp
目录内容清空。故需要重新设置一下,后边会讲。第二个如果不设置的话,也会出现警告提示:
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
……..
因此,也需要在hbase-env.sh
配置文件中进行配置,后面讲。
在hbase-env.sh
配置文件中,需要配置三个
地方。第一个为JDK
目录,第二个为HBASE_PID_DIR
,第三个为PermSize
.
cd /usr/hbase/conf
vi hbase-env.sh
1.在28行配置jdk路径
export JAVA_HOME=/usr/java/jdk1.8.0_111
2.在122行配置pid目录
export HBASE_PID_DIR=/home/hadoop/hbase-1.1.7/tmp
3.在46行将PermSize的两个配置关掉#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”
至此,hbase-env.sh配置完成。保存退出即可:wq
,这是正确的配置方法,如图:
jdk配置:
pid_dir配置:
这里的pid路径需要自己创建
如果不配置的话,启动时会出现如下错误:
permsize配置:
入托不进行配置的话,启动时会出现如下错误:
3.配置hbase-site.xml
|
|
其中hbase.zookeeper.property.dataDir
的目录为之前配置zookeeper
的data目录。
4.配置regionservers
vi regionservers
添加:
Master.Hadoop
Slave1.Hadoop
Slave2.Hadoop
5.将hbase发送到其他slave
和hadoop、zookeeper的配置一样,在master上配置完成后,将其相关文件发送到所有的slave下,并且修改其权限。
scp -r /usr/hbase root@Slave1.Hadoop:/usr
scp -r /usr/hbase root@Slave2.Hadoop:/usr
提示让输入密码后发送过去
scp -r /home/hadoop/hbase-1.1.7 hadoop@Slave1.Hadoop:/home/hadoop
scp -r /home/hadoop/hbase-1.1.7 hadoop@Slave2.Hadoop:/home/hadoop
分别进入Slave1和Slave2,修改/usr/hbase
的权限问题,root用户登录
cd /usr
ll
chown -R hadoop:hadoop hbase/
修改完成后,即完成hbase配置,下边开启服务并验证。
6.开启HBase服务
进入master的hbase
cd /usr/hbase/bin
./start-hbase.sh
jps
查看所有机器,会出现HRegionServer进程,但是在Master.Hadoop中缺少HMaster
进程。
如果你的机器中在Master中出现HMaster
和HRegionServer两个进程,在Slave上出现HRegionServer一个进程,则表示配置成功。忽略一下步骤。
在HBase启动时,如果HRegionServer或者HMaster其中一个进程启动不成功,可以查看日志,会发现集群时间不一致,误差超过2分半钟,所以要保证集群的时间同步。建议搭建ntp时间服务器来保证时间同步。方法如下:
7.搭建ntp时间服务器
其实这一步在安装完操作系统就该配置好,由于之前没有发现这里的错误,故就在此进行配置。在系统中查看当前时间,会发现与当前时间不一致。
(1).检查安装ntp服务
rpm -qa | grep ntp #检查是否安装ntp服务,如果没有安装,执行
yum install ntp
如图所示:
(2).配置ntp服务
为保证集群时间一致,现将hbase的master节点所在虚拟机作为时间服务器,其他Slave节点都与Master节点时间保持一致即可。如果Master连接外网,打开ntp配置文件进行配置。root用户登录
vi /etc/ntp.conf
在17行左右加#Hosts on local network are less restricted.
restrict 10.211.55.0 mask 255.255.255.0 nomodify notrap
27行左右加#中国这边最活跃的时间服务器 : http://www.pool.ntp.org/zone/cn
server 210.72.145.44 perfer #中国国家受时中心
37行左右加#允许上层时间服务器主动修改本机时间
restrict 210.72.145.44 nomodify notrap noquery
restrict 202.112.10.36 nomodify notrap noquery
restrict 59.124.196.83 nomodify notrap noquery#外部时间服务器不可用时,以本地时间作为时间服务
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
保存退出:wq
(3).启动服务
配置完成后,需要将ntp服务启动,用下边几条命令进行相关操作
systemctl enable ntpd.service #设置开机启动
systemctl start ntpd.service #启动服务
systemctl status ntpd.service #查看状态
systemctl restart ntpd.service #重启服务
(4).Slave时间同步
在Slave1和Slave2上进行时间同步。root用户登录后
ntpdate Master.Hadoop
即可查看时间已经改变。
(5).再次启动HBase并查看状态
时间同步完成后,再次启动hbase查看进程状态
退出root用户。hadoop用户登录
cd /usr/hbase/bin
./start-hbase.sh
jps
会发现Master中有HMaster和HRegionServer,Slave中有HRegionServer则表示启动成功。
至此,HBase安装配置完成,鉴于Hive配置较为繁琐,且篇幅较长,单独拿出一章配置Hive。