Virtual Box下搭建配置HBase集群教程(亲测可用)
Virtual Box下搭建配置HBase集群教程(亲测可用)
江边望海 发表于2年前
Virtual Box下搭建配置HBase集群教程(亲测可用)
  • 发表于 2年前
  • 阅读 31
  • 收藏 1
  • 点赞 0
  • 评论 0

【腾讯云】新注册用户域名抢购1元起>>>   

摘要: 在Virtual Box下搭建HBase集群。一台Master,两天regionServer。

1.总体思路

  1. 准备主从服务器;
  2. 准备专用帐号;
  3. 配置主从服务器可以无密码SSH互相登录;
  4. 安装JDK;
  5. 解压安装Hadoop;
  6. 配置hdfs、yarn、mapreduce等主从关系;
  7. 安装Zookeeper;
  8. 安装HBase。

2.环境介绍

  1. VirtualBox;
  2. 三台Centos7 64bit;
  3. 创建专用用户hadoop。

集群环境至少需要3个节点,也就是至少需要3台服务器设备:1个Master,2个Slave,节点之间局域网连接,可以相互ping通,下面通过表格的方式,列出3台服务器设备的具体配置信息:

Hostname IP User Password Role
master 192.168.1.101 hadoop 123456 namenode
slave1 192.168.1.105 hadoop 123456 datanode
slave2 192.168.1.106 hadoop 123456 datanode

为了便于维护,集群环境配置项最好使用相同用户名、用户密码、相同hadoop、hbase、zookeeper目录结构。

3.软件版本

  1. hadoop-2.7.3.tar.gz
  2. zookeeper-3.4.9.tar.gz
  3. hbase-1.2.3-bin.tar.gz

以上软件可在 http://www.apache.org/dyn/closer.cgi 下载。

4.环境准备

4.1.创建专用用户hadoop

很简单,使用root账户登录三台节点,创建hadoop账户。

$ useradd hadoop
$ passwd hadoop #设置密码为123456

4.2.添加hosts映射关系

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

$ vim /etc/hosts

添加的内容如下:

192.168.1.101 master
192.168.1.105 slave1
192.168.1.106 slave2

4.3.集群之间SSH无密码登录

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

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

4.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确认,之后就可以直接登录了:

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

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

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

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

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

测试:

[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

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

分别在slave1、slave2上执行:

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

5.安装配置JDK环境

这是安装三个软件的前提,推荐大家使用rpm安装,非常简单。我专门写了一篇博客,请移步阅读《Centos6.6 64位安装配置JDK 8教程》,虽然我现在使用的Centos7,此教程不受系统版本影响的。

6.Hadoop安装配置

在master节点上,将hadoop、hbase、zookeeper的安装包都解压到/home/hadoop(也就是hadoop账户的默认家目录),并重命名为hadoop、hbase、zookeeper。Hadoop的配置文件都在~/hadoop/etc/目录下,接下来对hadoop进行配置。

6.1.配置core-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/home/hadoop/hadoop/tmp</value>
    </property>
    <property>
        <name>io.file.buffer.size</name>
        <value>131702</value>
    </property>
</configuration>

6.2.配置hdfs-site.xml

<configuration>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/home/hadoop/hadoop/hdfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/home/hadoop/hadoop/hdfs/data</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>master:9001</value>
    </property>
    <property>
    <name>dfs.webhdfs.enabled</name>
    <value>true</value>
    </property>
</configuration>

6.3.配置mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>master:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>master:19888</value>
    </property>
</configuration>

6.4.配置hadoop-env.sh

将
export JAVA_HOME=${JAVA_HOME}
改为
export JAVA_HOME=/usr/java/default

6.5.配置yarn-env.sh

将
export JAVA_HOME=${JAVA_HOME}
改为
export JAVA_HOME=/usr/java/default

6.6.配置yarn-site.xml

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>master:8032</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>master:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>master:8035</value>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>master:8033</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>master:8088</value>
    </property>
    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>768</value>
    </property>
</configuration>

6.7.修改masters文件

vi masters ,加入以下配置内容:

master

6.8.修改slaves文件

vi slaves,加入以下配置内容:

slave1
slave2

6.9.文件拷贝

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

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

6.10.启动HDFS集群

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

$ bin/hadoop namenode -format

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

在master节点上,执行如下命令,启动hadoop集群:

[hadoop@master ~]$ ~/hadoop/sbin/start-dfs.sh
Starting namenodes on [master]
master: starting namenode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-namenode-master.out
slave2: starting datanode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-datanode-slave2.out
slave1: starting datanode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-datanode-slave1.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: starting secondarynamenode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-secondarynamenode-master.out
[hadoop@master ~]$

在master节点上,执行如下命令,是否可以看到下面几个进程:

[hadoop@master ~]$ jps
2598 SecondaryNameNode
2714 Jps
2395 NameNode
[hadoop@master ~]$

在两台slave上执行如下命令,是否可以看到下面几个进程:

[hadoop@slave1 ~]$ jps
2394 Jps
2317 DataNode
[hadoop@slave1 ~]$

#############

[hadoop@slave2 ~]$ jps
2396 Jps
2319 DataNode
[hadoop@slave2 ~]$

6.11.启动YARN

在master节点上,执行如下命令,启动YARN:

[hadoop@master ~]~/hadoop/sbin/start-yarn.sh
starting yarn daemons
starting resourcemanager, logging to /home/hadoop/hadoop/logs/yarn-hadoop-resourcemanager-master.out
slave2: starting nodemanager, logging to /home/hadoop/hadoop/logs/yarn-hadoop-nodemanager-slave2.out
slave1: starting nodemanager, logging to /home/hadoop/hadoop/logs/yarn-hadoop-nodemanager-slave1.out
[hadoop@master ~]$ jps

使用jps,如果出现 ResourceManager 这个进程,证明yarn已经启动成功了。

6.12.验证集群

最后,验证集群计算,执行Hadoop自带的examples,执行如下命令:

~/hadoop/bin/hadoop jar ~/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar randomwriter out

在浏览器浏览:

http://192.168.1.101:8088/

http://192.168.1.101:50070/

看是否能打开,以了解一下集群的信息。

7.配置配置Zookeeper

解压zookeeper安装包,并重命名为zookeeper,然后进行以下操作。

7.1.修改配置文件zoo.cfg

进入~/zookeeper/conf目录,拷贝zoo_sample.cfg文件为zoo.cfg

$ cp zoo_sample.cfg zoo.cfg

对zoo.cfg进行编辑,内容如下:

dataDir=/home/hadoop/zookeeper/data

server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888

7.2.新建并编辑myid文件

在dataDir目录下新建myid文件,输入一个数字(master为1,slave1为2,slave2为3),比如master主机上的操作如下:

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

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

7.3.启动ZooKeeper集群

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

$ ~/zookeeper/bin/zkServer.sh start

这里要强调的是,需要在三台机器上都启动Zookeeper。只在master启动是不行的。

8.安装配置HBase

将hbase安装包进行解压,并重命名为hbase,然后进行如下配置。

8.1.修改hbase-env.sh

export JAVA_HOME=/usr/java/default
export HBASE_CLASSPATH=/home/hadoop/hadoop/etc/hadoop/
export HBASE_MANAGES_ZK=false

8.2.配置hbase-site.xml

<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>

8.3.更改 regionservers

在 regionservers 文件中添加slave列表:

slave1
slave2

8.4.分发并同步安装包

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

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

8.5.启动HBase

在master节点上,执行如下命令:

[hadoop@master ~]$ ~/hbase/bin/start-hbase.sh
starting master, logging to /home/hadoop/hbase/bin/../logs/hbase-hadoop-master-master.out
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
slave1: starting regionserver, logging to /home/hadoop/hbase/bin/../logs/hbase-hadoop-regionserver-slave1.out
slave2: starting regionserver, logging to /home/hadoop/hbase/bin/../logs/hbase-hadoop-regionserver-slave2.out
slave1: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
slave1: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
slave2: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
slave2: Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0
[hadoop@master ~]$

在master节点,使用 jps 查看进程:

[hadoop@master ~]$ jps
3586 Jps
2408 NameNode
2808 ResourceManager
3387 HMaster
2607 SecondaryNameNode
3231 QuorumPeerMain
[hadoop@master ~]$

在slave节点,使用 jps 查看进程:

[hadoop@slave1 ~]$ jps
2736 HRegionServer
2952 Jps
2313 DataNode
2621 QuorumPeerMain
[hadoop@slave1 ~]$

如果看到了HMaster和HRegionServer则标识HBase启动成功。

8.6.使用shell操作HBase

[hadoop@master ~]$ ~/hbase/bin/hbase shell
2016-10-27 11:52:47,394 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.2.3, rbd63744624a26dc3350137b564fe746df7a721a4, Mon Aug 29 15:13:42 PDT 2016

hbase(main):001:0> list
TABLE
member
1 row(s) in 0.4470 seconds

=> ["member"]
hbase(main):002:0> version
1.2.3, rbd63744624a26dc3350137b564fe746df7a721a4, Mon Aug 29 15:13:42 PDT 2016

hbase(main):004:0> status
1 active master, 0 backup masters, 2 servers, 0 dead, 1.5000 average load

hbase(main):005:0> exit

如果能够顺利执行,则代表HBase,启动成功了。里面的member表是我后来创建的,你也可以使用create命令创建一个。

9.常见问题

This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh

Hadoop 2已经将HDFS和YARN分开管理,这样分开管理,可以使HDFS更方便地进行HA或Federation,实现HDFS的线性扩展(Scale out),从而保证HDFS集群的高可用性。从另一个方面们来说,HDFS可以作为一个通用的分布式存储系统,而为第三方的分布式计算框架提供方便,就像类似YARN的计算框架,其他的如,Spark等等。

YARN就是MapReduce V2,将原来Hadoop 1.x中的JobTracker拆分为两部分:一部分是负责资源的管理(Resource Manager),另一部分负责任务的调度(Scheduler)。

10.参考链接

https://www.iwwenbo.com/hadoop-hbase-zookeeper/ (特别要感谢此作者,我是通过他的教程顺利完成安装的,但是由于hadoop,zookeeper,hbase使用的版本过老了,这次我写到教程加入了YARN的配置和个人的理解。)

http://blog.csdn.net/shirdrn/article/details/9731423

http://blog.csdn.net/renfengjun/article/details/25320043

http://blog.csdn.net/young_kim1/article/details/50324345

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 26
博文 112
码字总数 57841
作品 3
×
江边望海
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: