侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

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

2023-12-15 星期五 / 0 评论 / 0 点赞 / 127 阅读 / 17570 字

1.总体思路 准备主从服务器; 准备专用帐号; 配置主从服务器可以无密码SSH互相登录; 安装JDK; 解压安装Hadoop; 配置hdfs、yarn、mapreduce等主从关系;

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 master192.168.1.105 slave1192.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 localhostLast 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@slave1Last login: Sat Jul 18 23:25:41 2015 from master[hadoop@master ~]$ ssh hadoop@slave2Last 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,加入以下配置内容:

slave1slave2

6.9.文件拷贝

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

scp -r /home/hadoop/hadoop     slave1:/home/hadoopscp -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.shStarting namenodes on [master]master: starting namenode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-namenode-master.outslave2: starting datanode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-datanode-slave2.outslave1: starting datanode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-datanode-slave1.outStarting 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 ~]$ jps2598 SecondaryNameNode2714 Jps2395 NameNode[hadoop@master ~]$

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

[hadoop@slave1 ~]$ jps2394 Jps2317 DataNode[hadoop@slave1 ~]$#############[hadoop@slave2 ~]$ jps2396 Jps2319 DataNode[hadoop@slave2 ~]$

6.11.启动YARN

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

[hadoop@master ~]~/hadoop/sbin/start-yarn.shstarting yarn daemonsstarting resourcemanager, logging to /home/hadoop/hadoop/logs/yarn-hadoop-resourcemanager-master.outslave2: starting nodemanager, logging to /home/hadoop/hadoop/logs/yarn-hadoop-nodemanager-slave2.outslave1: 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/dataserver.1=master:2888:3888server.2=slave1:2888:3888server.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/defaultexport 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列表:

slave1slave2

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

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

[hadoop@master ~]$ jps3586 Jps2408 NameNode2808 ResourceManager3387 HMaster2607 SecondaryNameNode3231 QuorumPeerMain[hadoop@master ~]$

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

[hadoop@slave1 ~]$ jps2736 HRegionServer2952 Jps2313 DataNode2621 QuorumPeerMain[hadoop@slave1 ~]$

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

8.6.使用shell操作HBase

[hadoop@master ~]$ ~/hbase/bin/hbase shell2016-10-27 11:52:47,394 WARN  [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicableHBase Shell; enter 'help<RETURN>' for list of supported commands.Type "exit<RETURN>" to leave the HBase ShellVersion 1.2.3, rbd63744624a26dc3350137b564fe746df7a721a4, Mon Aug 29 15:13:42 PDT 2016hbase(main):001:0> listTABLEmember1 row(s) in 0.4470 seconds=> ["member"]hbase(main):002:0> version1.2.3, rbd63744624a26dc3350137b564fe746df7a721a4, Mon Aug 29 15:13:42 PDT 2016hbase(main):004:0> status1 active master, 0 backup masters, 2 servers, 0 dead, 1.5000 average loadhbase(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

广告 广告

评论区