Hadoop112ZooKeeper及HBase的安装配置过程绝对可用Word格式文档下载.docx
《Hadoop112ZooKeeper及HBase的安装配置过程绝对可用Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Hadoop112ZooKeeper及HBase的安装配置过程绝对可用Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。
![Hadoop112ZooKeeper及HBase的安装配置过程绝对可用Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2022-12/30/0550fee5-7411-4fd8-9ee4-1f39046cf487/0550fee5-7411-4fd8-9ee4-1f39046cf4871.gif)
NETWORKING=yes
HOSTNAME=master
然后,运行
hostnamemaster
退出,再进入输入env|grephostname发现修改生效
∙为每个节点设置无密码ssh登录
1、在master节点上运行
ssh-keygen–trsa
2、在master节点上,首先
cat~/.ssh/id_rsa.pub>
>
~/.ssh/authorized_keys
然后
chmod644~/.ssh/authorized_keys
3、将master节点上的~/.ssh/id_rsa.pub文件分别scp到每个slave节点上,如
scp~/.ssh/id_rsa.pubroot@slave0:
/home
4、登录每个slave节点,运行(以slave0为例)
cat/home/id_rsa.pub>
5、修改文件权限
chmod600~/.ssh/authorized_keys
6、从第3步开始循环,直至配置好每个slave节点
∙下载Hadoop
下载hadoop-1.1.2,放在/home/LTE目录下,用命令tarzxvfhadoop-1.1.2.tar.gz解压,在/home/LTE下生成目录hadoop-1.1.2
∙修改HADOOP的配置文件
修改conf/core-site.xml文件
<
configuration>
property>
name>
fs.default.name<
/name>
value>
hdfs:
//master:
54310<
/value>
/property>
hadoop.tmp.dir<
/home/LTE/hadoop/tmp<
/configuration>
在conf/hadoop-env.xml文件里增加
exportJAVA_HOME=/usr/local/java/jdk1.6.0_32
修改conf/hdfs-site.xml文件:
dfs.replication<
2<
dfs.data.dir<
/home/LTE/hadoop/data<
dfs.name.dir<
/home/LTE/hadoop/name<
修改conf/mapred-site.xml文件:
mapred.job.tracker<
master:
9001<
mapred.local.dir<
/home/LTE/hadoop/temp<
conf/masters文件
master
conf/slaves文件
slave0
slave1
slave2
slave3
slave4
从master节点上,将/home/LTE目录依次拷贝到每个slave节点的/home目录下
∙启动Hadoop
在master节点的/home/LTE/hadoop-1.1.2目录下进行HDFS的格式化
bin/hadoopnamenode–format
格式化后,HDFS中的内容会全部丢失
然后,开启Hadoop集群
bin/start-all.sh
此时,Hadoop集群已经启动,可以提交运算的作业了。
HBase的配置
安装HBase时,不仅需要HBase本身,还需要ZooKeeper来提供、管理和协调分布式服务。
在运行HBase之前,也需要先启动ZooKeeper服务。
另外,有些版本的HBase只能支持特定版本的Hadoop,如下表:
在本文中,采用了Hadoop-1.1.2,HBase-0.94.8,以及ZooKeeper-3.4.5
由于ZooKeeper采用了Paxos算法来进行选举,因此实际能够有效参与选举的节点数量是奇数。
所以,我们在安装HBase和ZooKeeper时,只采用奇数个节点(本文采用5个节点,分别为master、slave0、slave1、slave2、slave3)。
安装ZooKeeper
将zookeeper-3.4.5.tar.gz在/home/LTE下解压,生成zookeeper-3.4.5目录。
在/home/LTE/zookeeper-3.4.5/conf中,有zoo_sample.cfg文件,使用命令cpzoo_sample.cfgzoo.cfg命令生成zoo.cfg配置文件。
编辑zoo.cfg的内容,如下:
[html]viewplaincopyprint?
#
The
number
of
milliseconds
each
tick
tickTime=2000
ticks
that
the
initial
synchronization
phase
can
take
initLimit=10
pass
between
sending
a
request
and
getting
an
acknowledgement
syncLimit=5
directory
where
snapshot
is
stored.
do
not
use
/tmp
for
storage,
here
just
example
sakes.
dataDir=/home/LTE/zookeeper
port
at
which
clients
will
connect
clientPort=2181
server.1=master:
2888:
3888
server.2=slave0:
server.3=slave1:
server.4=slave2:
server.5=slave3:
Be
sure
to
read
maintenance
section
administrator
guide
before
turning
on
autopurge.
http:
//zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
snapshots
retain
in
dataDir
#autopurge.snapRetainCount=3
Purge
task
interval
hours
Set
"
0"
disable
auto
purge
feature
#autopurge.purgeInterval=1
#Thenumberofmillisecondsofeachtick
tickTime=2000
#Thenumberofticksthattheinitial
#synchronizationphasecantake
initLimit=10
#Thenumberofticksthatcanpassbetween
#sendingarequestandgettinganacknowledgement
syncLimit=5
#thedirectorywherethesnapshotisstored.
#donotuse/tmpforstorage,/tmphereisjust
#examplesakes.
dataDir=/home/LTE/zookeeper
#theportatwhichtheclientswillconnect
clientPort=2181
3888
#
#Besuretoreadthemaintenancesectionofthe
#administratorguidebeforeturningonautopurge.
#http:
//zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#ThenumberofsnapshotstoretainindataDir
#autopurge.snapRetainCount=3
#Purgetaskintervalinhours
#Setto"
todisableautopurgefeature
#autopurge.purgeInterval=1
为了让系统能够识别zoo.cfg中的server.id=host:
port:
port中的server.id,在master节点的/home/LTE/zookeeper中创建一个文件myid,里面只有一个数字1;
同理,在slave0节点的/home/LTE/zookeeper中创建一个文件myid,里面只有一个数字2;
以此类推….直至slave3节点。
注意,这里id的范围是1~255。
以上配置(zookeeper以及zookeeper-3.4.5)要复制到集群中的每一个节点上去。
在/etc/profile的最后添加:
export
HBASE_HOME=/home/LTE/hbase-0.94.8
HADOOP_HOME=/home/LTE/hadoop-1.1.2
ZK_HOME=/home/LTE/zookeeper-3.4.5
JAVA_HOME=/usr/local/java/jdk1.6.0_32
CLASSPATH=$CLASSPATH:
$HBASE_HOME/lib:
$JAVA_HOME/lib
PATH=$JAVA_HOME/bin:
$HBASE_HOME/bin:
$ANT_HOME/bin:
$HADOOP_HOME/bin:
$ZK_HOME/bin:
$PATH
exportHBASE_HOME=/home/LTE/hbase-0.94.8
exportHADOOP_HOME=/home/LTE/hadoop-1.1.2
exportZK_HOME=/home/LTE/zookeeper-3.4.5
exportCLASSPATH=$CLASSPATH:
$JAVA_HOME/lib
exportPATH=$JAVA_HOME/bin:
$PATH
然后,source/etc/profile
这个操作要在集群的每一个节点上进行
启动ZooKeeper
在每一个节点的/home/LTE/zookeeper-3.4.5/bin中执行命令:
./zkServer.sh
start
这样就启动了zookeeper集群中的各个节点。
输入命令./zkServer.sh
status
可以查看当前节点在zookeeper集群中的角色是leader还是follower
安装HBase
将/home/LTE/hbase-0.94.8.tar.gz解压,生成/home/LTE/hbase-0.94.8。
在hbase-0.94.8/lib中,原来有一个hadoop-core-1.0.4.jar文件,但是我们用的Hadoop的版本是hadoop-1.1.2,所以需要将hbase-0.94.8/lib/hadoop-core-1.0.4.jar替换成hadoop-1.1.2/hadoop-core-1.1.2.jar,否则会有冲突。
打开conf/hbase-env.sh文件,将其中最后一行改为:
export
HBASE_MANAGES_ZK=false
这表示我们不使用hbase-0.94.8自带的zookeeper,而是使用我们刚才自己安装的zookeeper-2.3.4(具体指定使用哪个zookeeper是通过/etc/profile中的ZK_HOME变量来指定的)。
下面,打开conf/hbase-site.xml文件,添加以下内容:
1.<
2.
3.
hbase.rootdir<
4.
54310/hbase<
5.
6.
7.
hbase.cluster.distributed<
8.
true<
9.
10.
11.
12.
3<
13.
14.
15.
hbase.zookeeper.quorum<
16.
master,slave0,slave1,slave2,slave3<
17.
18.
19.
hbase.zookeeper.property.dataDir<
20.
/home/LTE/zookeeper/dataDir<
21.
22.<
其中,我们需要通过hbase.rootdir指定HDFS的一个namenode节点,并让HBase将数据写入HDFS中的一个目录(本例中就是hdfs:
54310/hbase);
hbase.zookeeper.quorum指定了哪些节点运行QuorumPeer(即QuorumPeerMain进程),个数需为奇数。
下面,打开文件conf/regionservers,添加以下内容:
1.slave0
2.slave1
3.slave2
4.slave3
该文件指定了HRegionServer进程将在哪些节点上运行。
以上配置需要在HBase的每一个节点中生效。
启动HBase
OK,现在HBase集群配置好了。
我们来启动HBase。
进入$HBASE_HOME/bin目录下,输入命令
./start-hbase.sh
在HBase集群启动之后,键入命令
./hbase
shell
启动HBase的控制台界面
我们可以在浏览器中查看HBase系统的运行状态,地址为http:
//172.16.38.213:
60010/master-status,其中172.16.38.213是master所在节点的IP.
常见问题
1、HBase中的某个节点无法启动
这很可能是因为集群中各个节点的系统时间不一致(时间差超出了某个阈值),这是我们需要将几台机器间的时间调整一致。
我们可以将master作为时间服务器,让其他机器与master进行对时。
首先,在master上键入命令
servicentpdstart
来开启master上的时间服务器。
等待几分钟后,在其他每一台机器上键入命令ntpdate
master
来与master进行对时
2、由于缺少一些jar包引起的异常
在HBase上运行一些Hadoop的MR程序时,可能会报以下异常:
[plain]viewplaincopyprint?
1.Exception
thread
main"
java.lang.NoClassDefFoundError:
com/google/protobuf/Message
2.....
...
3.Caused
by:
java.lang.ClassNotFoundException:
com.google.protobuf.Message
4.....
Exceptioninthread"
java.lang.NoClassDefFoundError:
com/google/protobuf/Message
.......
Causedby:
java.lang.ClassNotFoundException:
com.google.protobuf.Message
或者
org/apache/zookeeper/KeeperException
org.apache.zookeeper.KeeperException
org/apache/zookeeper/KeeperExcepti