设为首页 加入收藏

TOP

Hadoop+hbase+zookeeper完全分布式搭建
2019-02-12 13:40:42 】 浏览:10
Tags:Hadoop hbase zookeeper 完全 分布式 搭建
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_40596016/article/details/80392109

Hadoop+hbase+zookeeper完全分布式搭建

一.环境说明

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

Hostname

IP

User

Password

master

10.255.65.4

root

*

slave1

10.255.65.5

root

*

slave2

10.255.65.6

root

*

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

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

1.1版本兼容性:

网络提供,不保证正确性,仅供参考。

JDK、Hadoop、HBase版本兼容性(NS:不兼容;NT:未测试;Y:兼容):

HBase Version

JDK 6

JDK 7

JDK 8

2.0

X

X

Y

1.3

X

Y

Y

1.2

X

Y

Y

1.1

X

Y

NT

1.0

X

Y

NT

0.98

Y

Y

NT

0.94

Y

Y

N

Hadoop\HBase

HBase-1.1.x

HBase-1.2.x

HBase-1.3.x

HBase-2.0.x

Hadoop-2.0.x-alpha

X

X

X

X

Hadoop-2.1.0-beta

X

X

X

X

Hadoop-2.2.0

NT

X

X

X

Hadoop-2.3.x

NT

X

X

X

Hadoop-2.4.x

Y

Y

Y

X

Hadoop-2.5.x

Y

Y

Y

X

Hadoop-2.6.0

X

X

X

X

Hadoop-2.6.1+

NT

Y

Y

Y

Hadoop-2.7.0

X

X

X

X

Hadoop-2.7.1+

NT

Y

Y

Y

Hadoop-2.8.0

X

X

X

X

Hadoop-2.8.1

X

X

X

X

Hadoop-3.0.0-alphax

NT

NT

NT

NT

我采用的各组件版本为:

JDK :jdk1.8.0_25

Hadoop :hadoop-2.7.5

Hbase :hbase-1.2.6-bin

Zookeeper :zookeeper-3.4.10

二.准备工作

2.1 安装JDK

三台机器下载同版本JDK1.8安装

修改配置文件vim /etc/profile,配置环境变量

重新加载配置文件使之生效$ source /etc/profile

2.2添加hosts映射关系

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

$ vim /etc/hosts

添加内容如下:

10.255.65.4master

10.255.65.5slave1

10.255.65.6slave2

2.3 集群之间ssh无密码登录

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

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

2.3.1 开启Authentication免登陆

CentOS默认没有启动ssh无密登录,编辑 vim /etc/ssh/sshd_config,去掉以下两行注释,开启Authentication免登陆。

#RSAAuthentication yes
#PubkeyAuthentication yes

如果是root用户下进行操作,还要去掉 #PermitRootLogin yes注释,允许root用户登录。

2.3.2 生成authorized_keys

输入命令,ssh-keygen -t rsa,生成key,一直按回车。

就会在/root/.ssh生成:authorized_keys id_rsa.pub id_rsa 三个文件,为了各个机器之间的免登陆,在每一台机器上都要进行此操作。

2.3.3 合并公钥到authorized_keys文件

进入/root/.ssh目录,输入以下命令:

cat id_rsa.pub>> authorized_keys

#把master公钥合并到authorized_keys 中

ssh root@10.255.65.5cat ~/.ssh/id_rsa.pub>> authorized_keys

ssh root@10.255.65.6cat ~/.ssh/id_rsa.pub>> authorized_keys

#把slave1、slave2公钥合并到authorized_keys 中

完成之后输入命令,把authorized_keys远程copy到slave1和slave2之中

scpauthorized_keys10.255.65.5:/root/.ssh/

scp authorized_keys 10.255.65.6:/root/.ssh/

最好在每台机器上进行chmod 600 authorized_keys操作,使当前用户具有authorized_keys的读写权限。

拷贝完成后,在每台机器上进行 service sshd restart 操作, 重新启动ssh服务。

在每台机器输入 ssh 10.255.65.xx,测试能否无需输入密码连接另外两台机器。

三.Zookeeper集群安装配置

下载解压zookeeper文件并重命名为zookeeper。

3.1 修改配置文件zoo.cfg

进入~/zookeeper/conf目录:

$ cp zoo_sample.cfg zoo.cfg

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

dataDir=/usr/local/zookeeper/data

server.1=10.255.65.4:2888:3888

server.2=10.255.65.5:2888:3888

server.3=10.255.65.6:2888:3888

3.2 新建并编辑myid文件

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

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

3.3 启动zookeeper集群

Zookeeper的bin目录下zkServer.sh start

问题1:如果启动报类似异常: Cannot open channel to 2 at election address slave-02/10.255.65.6: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.4 关闭防火墙

$ /etc/init.d/iptables stop

$ service iptables stop

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

3.5成功标识

zkServer.sh status//查看状态。

三台机器必须只有一个leader,其他都是follower。

Jps查看进程,如果三台机器都有QuorumpeerMain,则启动成功。

四.hadoop集群安装配置

4.1 下载解压安装。

4.2 修改hadoop配置

配置文件位置:****/hadoop/etc/hadoop

4.2.1 core-site.xml

<configuration>

<property>

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

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

</property>

</configuration>

4.2.2 hadoop-env.sh

添加JDK路径:export JAVA_HOME=

4.2.3 hdfs-site.xml

<configuration>

<property>

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

<value>/mnt/sdb/</value>

</property>

<property>

<name>dfs.http.address</name>

<value>10.255.65.4:8777</value>

</property>

<property>

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

<value>/mnt/sdb/,/mnt/sdc/,/mnt/sdd/,/mnt/sde/,/mnt/sdf/,/mnt/sdg/,/mnt/sdh/,/mnt/sdi/,/mnt/sdj/,/mnt/sdk/,/mnt/sdl/,/mnt/sdm/,/mnt/sdn/,/mnt/sdo/,/mnt/sdp/,/mnt/sdq/</value>

</property>

<property>

<name>dfs.replication</name>

<value>3</value>

</property>

<property>

<name>heartbeat.recheck.interval</name>

<value>2000</value>

</property>

<property>

<name>dfs.heartbeat.interval</name>

<value>1</value>

</property>

</configuration>

4.2.4 mapred-site.xml

<configuration>

<property>

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

<value>master:9001</value>

</property>

</configuration>

4.2.5 修改slaves文件

slave1

slave2

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

4.2.6 远程复制

使用scp命令进行从本地到远程的文件传输操作:

scp -r /usr/local/hadoop slave1:/usr/local/hadoop

scp -r /usr/local/hadoopslave2:/usr/local/hadoop

4.3 启动hadoop集群

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

格式化文件系统:

$ bin/hadoop namenode -format

第一次启动前操作,以后无需操作!!!

然后启动hadoop:

$ sbin/start-all.sh

验证:通过jps能看到NodeManager,NameNode,SecondaryNameNode,ResourceManager,DataNode这几个进程。

五.Hbase集群安装配置

下载解压hbase并重命名为hbase。

Conf下配置:

5.1 hbase-env.sh

exportJAVA_HOME=/usr/java/jdk1.8.*

ExportHBASE_CLASSPATH=/usr/local/hadoop/etc/hadoop/

export HBASE_MANAGES_ZK=false

5.2 hbase-site.xml

<configuration>

<property>

<name>hbase.rootdir</name>

<value>hdfs://10.255.65.4: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列表:

Master

slave1

slave2

5.4 分发并同步安装包

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

$ scp -r /usr/local/hbaseslave1:/usr/local/hbase

$ scp -r /usr/local/hbase slave2:/usr/local/hbase

六.启动集群

6.1. 启动ZooKeeper

~/zookeeper/bin/zkServer.sh start

6.2. 启动hadoop

~/hadoop/sbin/start-all.sh

6.3. 启动hbase

~/hbase/bin/start-base.sh

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

七 .测试

可以hbase shell,进入hbase的shell操作测试。如果需要远程连接hbase,需要安装thrift。

thrift安装:略

八.问题

遇到其他问题欢迎补充!!!

【问题一】Masterisinitializing

此问题有两种常见情况:

1.服务器时间未同步导致。

date -s "20091112 18:30:50" &&hwclock --systohc

2.regionservers中未配置master。

重启即可解决。

【问题二】报错Hbase:namespace

服务一切正常,创建表的时候报错,更换表名正常。

Zookeeper中管理出错。

$sh zkCli.sh

ls /

输入rmr /hbase删除hbase管理即可。

【问题三】master.HMasterCommandLine: Master exiting Cannot assign requested address

vim /etc/hosts

添加本机ip配置localhost即可


编程开发网
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇HBase的SQL引擎(1)-Phoenix 下一篇两次hbase丢失数据的故障及原因分..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

array(4) { ["type"]=> int(8) ["message"]=> string(24) "Undefined variable: jobs" ["file"]=> string(32) "/mnt/wp/cppentry/do/bencandy.php" ["line"]=> int(214) }