在hdfs2.2.0上部署hbase

原创 2013年12月06日 11:36:42

文档说明

本文是在hadoop2.0(hdfs2.2.0)上部署hbase0.96版本时遇到的一些问题及其相应的解决办法。文中所述操作均在ubuntu10.04系统上进行。囿于作者水平有限,文章难免有错误简陋之处,欢迎读者朋友批评指正!

1. 集群介绍

本文是在hadoop2.0上搭建hbase时遇到的一些问题,及其相应的解决办法。

hbase版本:0.96.0;hdfs版本:2.2.0。

1.1. 硬件环境

本集群共有12台机器,机器配置如下

机器名 ip 内存 硬盘 操作系统
M244 10.10.0.14 64GB 3TB HP ubuntu 10.04
M245 10.10.0.15 64GB 3TB HP ubuntu 10.04
M246 10.10.0.16 64GB 3TB HP ubuntu 10.04
M247 10.10.0.17 64GB 3TB HP ubuntu 10.04
M248 10.10.0.18 64GB 3TB HP ubuntu 10.04
M249 10.10.0.19 64GB 3TB HP ubuntu 10.04
M250 10.10.0.20 64GB 3TB HP ubuntu 10.04
M251 10.10.0.21 64GB 3TB HP ubuntu 10.04
M252 10.10.0.22 64GB 3TB HP ubuntu 10.04
M253 10.10.0.23 64GB 3TB HP ubuntu 10.04
M254 10.10.0.24 64GB 3TB HP ubuntu 10.04
M255 10.10.0.25 64GB 3TB HP ubuntu 10.04

1.2. 集群架构

在12台机器上部署角色:两个master,一主一备;12个regionserver。

选定M244、M245两台机器作为两个master节点,M244为主M245为备。然后在每台机器上启动一个regionserver。

2. Hbase部署

问题1) Hadoop2.2.0有关的jar包(hdfsmapreduceyarn

问题描述

因为hbase是以hadoop中的hdfs作为后端存储,且有一定的mapreduce任务要建立在hbase之上,因此在启动hbase之前,需要先将hadoop中的一些jar包拷贝到hbase的lib目录中。这些jar包包括三类:公共包、hdfs相关包、mapreduce相关包。因为hadoop2.0中将hadoop1.0里Mapreduce的资源管理功能分拆到yarn,yarn作为hadoop内核的一个独立组件。

公共包:

hadoop-annotations-2.2.0.jar
hadoop-auth-2.2.0.jar
hadoop-common-2.2.0.jar

Hdfs相关包:

hadoop-hdfs-2.2.0.jar

Mapreduce相关包:

mapreduce部分

hadoop-mapreduce-client-app-2.1.0-beta.jar
hadoop-mapreduce-client-common-2.1.0-beta.jar
hadoop-mapreduce-client-core-2.1.0-beta.jar
hadoop-mapreduce-client-jobclient-2.1.0-beta.jar
hadoop-mapreduce-client-shuffle-2.1.0-beta.jar

Yarn部分

hadoop-yarn-api-2.1.0-beta.jar
hadoop-yarn-client-2.1.0-beta.jar
hadoop-yarn-common-2.1.0-beta.jar
hadoop-yarn-server-common-2.1.0-beta.jar
hadoop-yarn-server-nodemanager-2.1.0-beta.jar

报错信息

hbase中使用到的hadoop相关jar包没有被替换时,可能的报错信息如下:

2013-11-14 00:04:45,723 ERROR [main] regionserver.HRegionServerCommandLine: Region server exiting

java.lang.RuntimeException: Failed construction of Regionserver: class org.apache.hadoop.hbase.regionserver.HRegionServer

        at org.apache.hadoop.hbase.regionserver.HRegionServer.constructRegionServer(HRegionServer.java:2296)

        at org.apache.hadoop.hbase.regionserver.HRegionServerCommandLine.start(HRegionServerCommandLine.java:61)

        at org.apache.hadoop.hbase.regionserver.HRegionServerCommandLine.run(HRegionServerCommandLine.java:85)

        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)

        at org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:126)

        at org.apache.hadoop.hbase.regionserver.HRegionServer.main(HRegionServer.java:2311)

Caused by: java.lang.reflect.InvocationTargetException

        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)

        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)

        at org.apache.hadoop.hbase.regionserver.HRegionServer.constructRegionServer(HRegionServer.java:2294)

        ... 5 more

Caused by: java.lang.NoClassDefFoundError: org/apache/hadoop/util/PlatformName

问题2) Hbase.rootdir的配置——无法识别的Hdfs

问题描述

Hadoop1.0中的hdfs配置如下

<property>
  <name>fs.default.name</name>
  <value>hdfs://namenode:port</value>
</property>

Hadoop2.0中针对hdfsnamenode单点问题启动了HA方案,新配置如下

<property>
  <name>fs.default.name</name>
  <value>hdfs://hdfs_cluster</value>
</property>

这里hdfs_cluster代表了整个hdfs集群,该集群中可能有多个HAnamenode节点(关于hadoop2.0中的Hdfs集群namenodeHA配置详见[参考资料1]

建立在hadoop2.0上的hbase需要根据hadoop2.0里的hdfs HA方案做相应修改。解决方法(详见[参考资料2]):

  Change the distributed file system URI in hbase-site.xml to the name specified in the dfs.nameservices property in hdfs-site.xml.  The clients must also have access to hdfs-site.xml's  dfs.client.* settings to properly use HA.

实际操作时将hdfs的配置文件core-site.xmlhdfs-site.xml拷贝到hbaseconf目录下即可解决问题。

报错信息

2013-11-14 00:43:05,004 FATAL [master:SY-0244:60000] master.HMaster: Unhandled exception. Starting shutdown.

java.io.IOException: Failed on local exception: java.io.IOException: Couldn't set up IO streams; Host Details : local host is: "SY-0244/10.10.65.13"; destination host is: "hadoop-test":8020;

Caused by: java.io.IOException: Couldn't set up IO streams

Caused by: java.nio.channels.UnresolvedAddressException

2013-11-14 00:55:20,287 ERROR [main] master.HMasterCommandLine: Master exiting

java.lang.RuntimeException: Failed construction of Master: class org.apache.hadoop.hbase.master.HMaster

Caused by: java.net.UnknownHostException: hadoop-test

问题3) 绑定端口错误——address already in use

问题描述

这个错误比较简单,服务器配置中比较常见也比较容易解决!

下面对hbase中需要配置的端口做个小结

  配置参数 默认端口 作用描述
Master hbase.master.port 60000 Master对外服务端口
hbase.master.info.port 60010 通过web界面查看master和整个集群配置信息端口
Region server hbase.regionserver.port 60020 Regionserver提供服务(读写数据)的端口
hbase.regionserver.info.port 60030 通过web界面查看regionserver信息端口
Zookeeper hbase.zookeeper.peerport 2888 这两个端口是hbase自己管理zookeeper时才需要配置。Peerportzookeeper节点之间通信端口,leaderport为选举leader的端口。
hbase.zookeeper.leaderport 3888
hbase.zookeeper.property.clientPort 2181 hbase使用外部zookeeper系统时使用。Hbasezookeeper通信的端口,该配置需要与hbase.zookeeper.quorum配合使用

报错信息

2013-11-14 00:59:14,823 ERROR [RpcServer.handler=11,port=60000] master.HMaster: Region server SY-0244,60020,13843 61978263 reported a fatal error:

ABORTING region server SY-0263,60020,1384361978263: Unhandled: Unknown out of band call #-2147483647

Cause:

org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.ipc.RpcServerException): Unknown out of band call #-2147483647

2013-11-14 00:59:16,146 ERROR [RpcServer.handler=30,port=60000] master.HMaster: Region server SY-0244,60020,13843 61954798 reported a fatal error:

ABORTING region server SY-0244,60020,1384361954798: Unhandled: Port in use: 0.0.0.0:8030

Cause:

java.net.BindException: Port in use: 0.0.0.0:8030

Caused by: java.net.BindException: Address already in use

3. Thrift server启动

启动好hbase集群后,在每台机器上启动hbasethrift server服务。由于hbase本身没有提供多个thrift server之间的高可靠配置,因此我们通过zookeeper来保证。每个thrift serverzookeeper注册,zookeeper保存一个现有存活的hbase thrift server列表,使用hbase的服务通过zookeeper查询到该列表,然后访问hbase集群。

4. 参考资料

[参考资料1] Hadoop2.0中hdfs的namenode高可靠配置(HA配置)参考http://www.cloudera.com/content/cloudera-content/cloudera-docs/CDH4/latest/CDH4-High-Availability-Guide/cdh4hag_topic_2_3.html

[参考资料2] 如何使得hbase适应hadoop2.0里hdfs的HA方案http://www.cloudera.com/content/cloudera-content/cloudera-docs/CDH4/latest/CDH4-High-Availability-Guide/cdh4hag_topic_2_6.html


Hbase单机模式部署

HBase是一个分布式、面向列的开源数据库,是Apache Hadoop项目的子项目,适用于非结构化数据存储的数据库。在Hadoop家族中,很多产品为HBase提供服务: Hadoop HDFS...
  • conansix
  • conansix
  • 2014年10月15日 16:00
  • 5787

HBase集群安装部署(完全分布式)

zookeeper 配置   1.         Zookeeper服务集群规模不小于三个节点,要求各服务之间系统时间要保持一致。 2.         在m1的usr/local目录...
  • zwx19921215
  • zwx19921215
  • 2014年12月09日 10:09
  • 25009

hbase 单机、伪分布、完全分布部署

hbase 单机模式,hbase伪分布模式,hbase完全分布模式 安装配置
  • linlinv3
  • linlinv3
  • 2015年10月28日 10:42
  • 5372

使用hbase为数据库的java工程发布到tomcat

问题: 首先将我的工程打包成war包发布到tomcat的webapp目录,通过浏览器访问工程,在tomcat的catalina.out报错如下: 1: 2013-01-28 10:39:06 [...
  • tsy0614
  • tsy0614
  • 2013年01月28日 11:11
  • 1245

Hbase完全分布式集群安装配置(Hbase1.0.0,Hadoop2.6.0)

Hbase安装文档 1.   安装软件 OS:centos6.5 Hadoop:hadoop2.6.0 Hbase:hbase.1.0.0 JDK: jdk1.7.0_51 集群机器: 192.168...
  • wuwenxiang91322
  • wuwenxiang91322
  • 2015年03月27日 23:07
  • 34179

Hbase单机版配置与使用

hbase单机版简单配置与使用,使用自己的zookeeper而不是hbase自带的zookeeper,使用普通文件系统做存储使用版本,版本:hbase-1.2.5...
  • wyh9459
  • wyh9459
  • 2017年04月03日 22:46
  • 1761

Hbase学习笔记问题总结

遇到问题原因,修改了 network 2017-04-04 16:45:54,556 ERROR [main] master.HMasterCommandLine: Master exiting ja...
  • qq_26840065
  • qq_26840065
  • 2017年04月04日 22:58
  • 2819

Centos7上HBase的安装和配置

>选择版本 我选择:HBase1.0.3 & Hadoop 2.5.2。 安装HBase需要考虑和Hadoop版本的兼容性。 HBase与Hadoop版本的兼容情况,可参考: 《HBase各版本对...
  • sunny05296
  • sunny05296
  • 2017年01月11日 19:53
  • 3104

Hbase1.3.1 完全分布式搭建。

hbase的搭建是比较简单的,无论是单机模式还是分布式都相对容易。本人选择的是1.3.1的版本,按照官方的文档很快就搭建起来了,但是启动的时候出现了错误。无论是baidu还是google都没有找到答案...
  • Leafage_M
  • Leafage_M
  • 2017年07月16日 17:45
  • 2341

Hbase 单机版的安装配置

1 去conf目录修改hbase-site.xml       hbase.rootdir     hdfs://localhost:9000/hbase         hba...
  • zjjee
  • zjjee
  • 2014年10月14日 15:51
  • 6317
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在hdfs2.2.0上部署hbase
举报原因:
原因补充:

(最多只允许输入30个字)