好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Hadoop+HBase+ZooKeeper分布式集群环境搭建步骤

一、环境说明

集群环境至少需要3个节点(也就是3台服务器设备):1个Master,2个Slave,节点之间局域网连接,可以相互ping通,下面举例说明,配置节点IP分配如下:

Hostname IP User Password
master 192.168.59.133 hadoop 123456
slave1 192.168.59.134 hadoop 123456
slave2 192.168.59.135 hadoop 123456

三个节点均使用 CentOS 6.5 系统,为了便于维护,集群环境配置项最好使用相同用户名、用户密码、相同hadoop、hbase、zookeeper目录结构。

注: 可以通过编辑 /etc/sysconfig/network 文件来修改 hostname 。

##二、准备工作

2.1 安装JDK

在三台机器上配置JDK环境,下载 jdk-8u51-linux-x64.rpm 文件直接安装:

?

1

$ rpm -ivh jdk-8u51-linux-x64.rpm

修改配置文件 vim /etc/profile :

?

1

2

3

export JAVA_HOME= /usr/java/jdk1 .8.0_51

export PATH=$JAVA_HOME /bin :$PATH

export CLASSPATH=.:$JAVA_HOME /lib/dt .jar:$JAVA_HOME /lib/tools .jar

然后重新加载配置文件使之生效:

?

1

$ source /etc/profile

2.2 添加Hosts映射关系

分别在三个节点上添加hosts映射关系:

?

1

$ vim /etc/hosts

添加的内容如下:

192.168.59.133 master
192.168.59.134 slave1
192.168.59.135 slave2

2.3 集群之间SSH无密码登陆

CentOS默认安装了ssh,如果没有你需要先安装ssh 。

集群环境的使用必须通过ssh无密码登陆来执行,本机登陆本机必须无密码登陆,主机与从机之间必须可以双向无密码登陆,从机与从机之间无限制。

2.3.1 设置master无密码自登陆

主要有三步:①生成公钥和私钥、②导入公钥到认证文件、③更改权限

?

1

2

3

$ ssh -keygen -t rsa -f ~/. ssh /id_rsa

$ cat ~/. ssh /id_rsa .pub >> ~/. ssh /authorized_keys

$ chmod 700 ~/. ssh && chmod 600 ~/. ssh /*

测试,第一次登录可能需要yes确认,之后就可以直接登录了:

?

1

2

$ ssh localhost

Last login: Sat Jul 18 22:57:44 2015 from localhost

对于 slave1 和 slave2,进行无密码自登陆设置,操作同上。

2.3.2 设置主机->从机的无密码登录

?

1

$ cat ~/. ssh /id_rsa .pub | ssh hadoop@slave1 'cat - >> ~/.ssh/authorized_keys'

?

1

$ cat ~/. ssh /id_rsa .pub | ssh hadoop@slave2 'cat - >> ~/.ssh/authorized_keys'

测试:

?

1

2

3

4

[hadoop@master ~]$ ssh hadoop@slave1

Last login: Sat Jul 18 23:25:41 2015 from master

[hadoop@master ~]$ ssh hadoop@slave2

Last login: Sat Jul 18 23:25:14 2015 from master

2.3.3 设置从机->主机的无密码登录

分别在slave1、slave2上执行:

?

1

$ cat ~/. ssh /id_rsa .pub | ssh hadoop@master 'cat - >> ~/.ssh/authorized_keys'

三、Hadoop集群安装配置

这里会将hadoop、hbase、zookeeper的安装包都解压到 /home/hadoop/ 个人主文件夹下,并重命名为hadoop、hbase、zookeeper。

3.1 修改hadoop配置

配置文件都在 ~/hadoop/etc/ 目录下

3.1.1 core-site.xml

?

1

2

3

4

5

6

<configuration>

     <property>

         <name>fs.default.name< /name >

         <value>hdfs: //master :9000< /value >

     < /property >

< /configuration >

3.1.2 hadoop-env.sh

添加JDK路径:

?

1

export JAVA_HOME= /usr/java/jdk1 .8.0_51

3.1.3 hdfs-site.xml

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<configuration>

     <property>

         <name>dfs.name.dir</name>

         <value>/home/hadoop/hadoop/name</value>

     </property>

     <property>

         <name>dfs.data.dir</name>

         <value>/home/hadoop/hadoop/data</value>

     </property>

     <property>

         <name>dfs.replication</name>

         <value> 3 </value>

     </property>

</configuration>

3.1.4 mapred-site.xml

?

1

2

3

4

5

6

<configuration>

     <property>

         <name>mapred.job.tracker</name>

         <value>master: 9001 </value>

     </property>

</configuration>

3.1.5 修改masters文件

master

3.1.6 修改slaves文件

slave1
slave2

注意:三台机器上都进行相同的配置,都放在相同的路径下。

使用 scp 命令进行从本地到远程(或远程到本地)的文件拷贝操作:

?

1

2

scp -r /home/hadoop/hadoop      slave1: /home/hadoop

scp -r /home/hadoop/hadoop      slave2: /home/hadoop

3.2 启动hadoop集群

进入master的 ~/hadoop 目录,执行以下操作:

?

1

$ bin /hadoop namenode - format

格式化namenode,第一次启动服务前执行的操作,以后不需要执行。

然后启动hadoop:

?

1

$ sbin /start-all .sh

通过 jps 命令能看到除jps外有5个进程:

?

1

2

3

4

5

6

7

$ jps

4866 NodeManager

4370 NameNode

4899 Jps

4648 SecondaryNameNode

4779 ResourceManager

4460 DataNode

四、ZooKeeper集群安装配置

解压zookeeper-3.3.2.tar.gz并重命名为zookeeper。

4.1 修改配置文件zoo.cfg

进入 ~/zookeeper/conf 目录:

?

1

$ cp zoo_sample.cfg zoo.cfg

拷贝 zoo_sample.cfg 文件为 zoo.cfg ,并编辑如下:

?

1

2

3

4

dataDir= /home/hadoop/zookeeper/data

server.1=192.168.59.133:2888:3888

server.2=192.168.59.134:2888:3888

server.3=192.168.59.135:2888:3888

4.2 新建并编辑myid文件

在dataDir目录下新建myid文件,输入一个数字(master为 1 ,slave1为 2 ,slave2为 3 ):

?

1

2

$ mkdir /home/hadoop/zookeeper/data

$ echo "1" > /home/hadoop/zookeeper/data/myid

同样使用 scp 命令进行远程复制,只不过要修改每个节点上 myid 文件中的数字。

4.3 启动ZooKeeper集群

在ZooKeeper集群的每个结点上,执行启动ZooKeeper服务的脚本:

?

1

$ ~ /zookeeper/bin/zkServer .sh start

1.如果启动报类似异常:QuorumCnxManager@384] - Cannot open channel to 2 at election address slave-02/192.168.0.178:3888 是可以忽略的,因为该服务启动时会尝试连接所有节点,而其他节点尚未启动。通过后面部分可以看到,集群在选出一个Leader后,最后稳定 了。其他结点可能也出现类似问题,属于正常。

2.关闭防火墙。在hadoop集群环境(linux系统)中最好关闭防火墙,不然会出现很多问题,例如namenode找不到datanode等。如果不关闭防火墙,客户端使用API操作HDFS以及ZooKeeper,可能就会出现下面常见的两种异常:

使用API操作HDFS时会出现异常:java.net.NoRouteToHostException: No route to host 使用API操作ZK时会出现异常:org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for xxxx

3.使用root权限登陆后,输入关闭防火墙命令:

?

1

2

$ /etc/init .d /iptables stop

$ service iptables stop

修改禁用selinux: /etc/selinux/config文件,设置 "SELINUX=disabled"

五、HBase集群安装配置

解压hbase-1.0.1.1-bin.tar.gz并重命名为hbase。

5.1 hbase-env.sh

?

1

2

3

export JAVA_HOME= /usr/java/jdk1 .8.0_51

export HBASE_CLASSPATH= /home/hadoop/hadoop/etc/hadoop/

export HBASE_MANAGES_ZK= false

5.2 hbase-site.xml

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

<configuration>

     <property>

         <name>hbase.rootdir</name>

         <value>hdfs: //master:9000/hbase</value>

     </property>

     <property>

         <name>hbase.master</name>

         <value>master</value>

     </property>

     <property>

         <name>hbase.cluster.distributed</name>

         <value> true </value>

     </property>

     <property>

         <name>hbase.zookeeper.property.clientPort</name>

         <value> 2181 </value>

     </property>

     <property>

         <name>hbase.zookeeper.quorum</name>

         <value>master,slave1,slave2</value>

     </property>

     <property>

         <name>zookeeper.session.timeout</name>

         <value> 60000000 </value>

     </property>

     <property>

         <name>dfs.support.append</name>

         <value> true </value>

     </property>

</configuration>

5.3 更改 regionservers

在 regionservers 文件中添加slave列表:

slave1
slave2

5.4 分发并同步安装包

将整个hbase安装目录都拷贝到所有slave服务器:

?

1

2

$ scp -r /home/hadoop/hbase   slave1: /home/hadoop

$ scp -r /home/hadoop/hbase   slave2: /home/hadoop

六、启动集群

1. 启动ZooKeeper

?

1

~ /zookeeper/bin/zkServer .sh start

2. 启动hadoop

?

1

~ /hadoop/sbin/start-all .sh

3. 启动hbase

?

1

~ /hbase/bin/start-base .sh

4. 启动后,master上进程和slave进程列表

?

1

2

3

4

5

6

7

[hadoop@master ~]$ jps

6225 Jps

2897 SecondaryNameNode   # hadoop进程

2710 NameNode            # hadoop master进程

3035 ResourceManager     # hadoop进程

5471 HMaster             # hbase master进程

2543 QuorumPeerMain      # zookeeper进程

?

1

2

3

4

5

[hadoop@slave1 ~]$ jps

4689 Jps

2533 QuorumPeerMain       # zookeeper进程

2589 DataNode             # hadoop slave进程

4143 HRegionServer        # hbase slave进程

5. 进入hbase shell进行验证

?

1

2

3

4

5

6

7

8

9

10

11

12

[hadoop@master ~]$ hbase /bin/hbase shell

2015-07-20 00:42:11,725 WARN  [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin -java classes where applicable

HBase Shell; enter 'help<RETURN>' for list of supported commands.

Type "exit<RETURN>" to leave the HBase Shell

Version 1.0.1.1, re1dbf4df30d214fca14908df71d038081577ea46, Sun May 17 12:34:26 PDT 2015

hbase(main):001:0> list

TABLE                                                                               

0 row(s) in 1.6950 seconds

=> []

hbase(main):002:0> status

2 servers, 0 dead, 1.0000 average load

hbase(main):003:0>

参考:

[1] HdhCmsTestsmalldeng.blog.51cto测试数据/1038075/1329290
[2] HdhCmsTestmarysee.blog.51cto测试数据/1000292/629405

到此这篇关于Hadoop+HBase+ZooKeeper分布式集群环境搭建的文章就介绍到这了,更多相关Hadoop HBase ZooKeeper集群搭建内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

原文链接:https://HdhCmsTestcnblogs测试数据/wanghuaijun/p/16158046.html

查看更多关于Hadoop+HBase+ZooKeeper分布式集群环境搭建步骤的详细内容...

  阅读:20次