文档章节

Virtual Box下搭建配置HBase集群教程(亲测可用)

江边望海
 江边望海
发布于 2016/10/26 14:26
字数 2485
阅读 33
收藏 1

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
郑州
技术主管
HADOOP HBASE配置注意事项

1、yum安装的jdk工具1.8版本,在配置hbase1.2版本需要在hbase-env.sh配置文件中注释掉下面的内容: export HBASEMASTEROPTS="$HBASEMASTEROPTS -XX:PermSize=128m -XX:MaxPermSize=128m" exp...

断臂人
07/11
0
0
大数据平台搭建-hbase集群的搭建

本系列文章主要阐述大数据计算平台相关框架的搭建,包括如下内容: 虚拟服务器安装 基础环境安装 zookeeper集群的搭建 kafka集群的搭建 hadoop/hbase集群的搭建 spark集群的搭建 flink集群的...

molyeo
07/25
0
0
hbase——安装配置hbase

1.下载hbase的压缩包,解压出来。 2.检查hbase包和hadoop包版本是否一致,替换成hadoop核心jar包。将hadoop集群的hadoop-1.2.1-core.jar替换hbase的lib目录下的hadoop核心包,主要目的是防止...

cjun1990
2015/04/15
0
0
Hadoop上路_15-HBase0.98.0入门

以下操作在Hadoop分布式集群基础上进行。 一。分布式环境搭建 下载:http://www.apache.org/dyn/closer.cgi/hbase/ ,hbase-0.98.0-hadoop2-bin.tar.gz。 1.在master主控机安装HBase 1)解压...

vigiles
2014/04/03
0
0
八年磨一剑,阿里云HBase做到性能和稳定性提升10倍!

6月6日,阿里云宣布云数据库HBase版 正式公测2.0版本。新2.0版本相比1.x版本通过架构级别的优化,在性能,稳定性相比1.x版本带来10x的提升,并结合阿里集团长达8年的实践经验,将HBase这个为...

所在jason
06/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

学习设计模式——中介者模式

1. 认识中介者模式 1. 定义:用一个中介对象来封装一系列的对象交互行为,中介者使得各对象不需要显式的互相引用,从而使其松散耦合,独立的改变他们之间的交互。 2. 结构: Mediator:中介者...

江左煤郎
10分钟前
0
0
深入理解Plasma(1):Plasma 框架

这一系列文章将围绕以太坊的二层扩容框架,介绍其基本运行原理,具体操作细节,安全性讨论以及未来研究方向等。本篇文章作为开篇,主要目的是理解 Plasma 框架。 Plasma 作为以太坊的二层扩容...

HiBlock
17分钟前
0
0
Java 8 日期 示例

Java 8 推出了全新的日期时间API。Java处理日期、日历和时间的方式一直为社区所诟病,将 java.util.Date设定为可变类型,以及SimpleDateFormat的非线程安全使其应用非常受限。Java也意识到需...

阿刚ABC
43分钟前
1
0
RxJava操作符lift 笔记

在内部,每个Rx operator都做3件事: 它订阅源并观察值。 它根据操作员的目的转换观察到的序列。 它通过调用onNext,onError和onCompleted将修改后的序列推送到自己的订阅者。 compose运算符...

woshixin
44分钟前
1
0
lnmp+coreseek实现站内全文检索(安装篇)

软件安装包 安装环境 系统环境 centos7.2 1核2G 软件环境 coreseek-3.2.14 lnmp1.5 安装mmseg 更新依赖包和安装编译环境 yum -y install m4 autoconf automake libtoolyum -y install gcc g...

毛毛雨rain
56分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部