设为首页 收藏本站
查看: 731|回复: 0

[经验分享] hbase安装配置(整合到hadoop)

[复制链接]

尚未签到

发表于 2015-7-13 10:12:54 | 显示全部楼层 |阅读模式
如果想详细了解hbase的安装:http://abloz.com/hbase/book.html 和官网http://hbase.apache.org/  
  
2.  Hbase集群安装前注意


  
  

  1)  Java:(hadoop已经安装了)
  2)  Hadoop 0.20.x / Hadoop-2.x 已经正确安装,并且可以启动 HDFS 系统, 可参考的Hadoop安装文档:Hadoop集群配置(最全面总结)http://blog.iyunv.com/hguisu/article/details/7237395
  3)  ssh 必须安装sshsshd 也必须运行,这样Hadoop的脚本才可以远程操控其他的Hadoop和Hbase进程。ssh之间必须都打通,不用密码都可以登录,详细方法可以        Google一下 ("ssh passwordless login").
  4)  NTP:集群的时钟要保证基本的一致。稍有不一致是可以容忍的,但是很大的不一致会 造成奇怪的行为。 运行 NTP 或者其他什么东西来同步你的时间.
  如果你查询的时候或者是遇到奇怪的故障,可以检查一下系统时间是否正确!
  设置集群各个节点时钟:date -s “2012-02-13 14:00:00”
  5)  ulimit 和 nproc:
  Base是数据库,会在同一时间使用很多的文件句柄。大多数linux系统使用的默认值1024是不能满足的,会导致FAQ: Why do I see "java.io.IOException...(Too manyopen files)" in my logs?异常。还可能会发生这样的异常
  2010-04-06 03:04:37,542 INFO org.apache.hadoop.hdfs.DFSClient: ExceptionincreateBlockOutputStream java.io.EOFException
  2010-04-06 03:04:37,542 INFO org.apache.hadoop.hdfs.DFSClient:Abandoning block blk_-6935524980745310745_1391901
  所以你需要修改你的最大文件句柄限制。可以设置到10k. 你还需要修改 hbase 用户的 nproc,如果过低会造成 OutOfMemoryError异常。 [2] [3].
  需要澄清的,这两个设置是针对操作系统的,不是Hbase本身的。有一个常见的错误是Hbase运行的用户,和设置最大值的用户不是一个用户。在Hbase启动的时候,第一行日志会现在ulimit信息,所以你最好检查一下。
  

  可以先查看当前用户 ulimit:
  ulimit -n

  

  设置ulimit:
       如果你使用的是Ubuntu,你可以这样设置:
  在文件 /etc/security/limits.conf 添加一行,如:
  hadoop  -       nofile 32768
  可以把 hadoop 替换成你运行Hbase和Hadoop的用户。如果你用两个用户,你就需要配两个。还有配nproc hard 和 softlimits. 如:
  hadoop soft/hard nproc 32000
  在 /etc/pam.d/common-session 加上这一行:
  session required pam_limits.so
  否则在 /etc/security/limits.conf上的配置不会生效.
  还有注销再登录,这些配置才能生效!
  7 )修改Hadoop HDFS Datanode同时处理文件的上限:dfs.datanode.max.xcievers
  一个 Hadoop HDFS Datanode 有一个同时处理文件的上限. 这个参数叫 xcievers (Hadoop的作者把这个单词拼错了). 在你加载之前,先确认下你有没有配置这个文件conf/hdfs-site.xml里面的xceivers参数,至少要有4096:
  
  dfs.datanode.max.xcievers
  4096
  
  对于HDFS修改配置要记得重启.
  如果没有这一项配置,你可能会遇到奇怪的失败。你会在Datanode的日志中看到xcievers exceeded,但是运行起来会报 missing blocks错误。例如: 02/12/1220:10:31 INFO hdfs.DFSClient: Could not obtain blockblk_XXXXXXXXXXXXXXXXXXXXXX_YYYYYYYY from any node: java.io.IOException: No livenodes contain current block. Will get new block locations from namenode andretry...
  8)继承hadoop安装的说明:
  每个机子/etc/hosts
  10.64.56.74  node2 (master)
  10.64.56.76  node1  (slave)
  10.64.56.77  node3 (slave)
  9) 继续使用hadoop用户安装
  Chown –R hadoop /usr/local/hbase

  
4.  运行和确认安装


4.1当Hbase托管ZooKeeper的时候
  当Hbase托管ZooKeeper的时候Zookeeper集群的启动是Hbase启动脚本的一部分
  首先确认你的HDFS是运行着的。你可以运行HADOOP_HOME中的 bin/start-hdfs.sh 来启动HDFS.你可以通过put命令来测试放一个文件,然后有get命令来读这个文件。通常情况下Hbase是不会运行mapreduce的。所以比不需要检查这些。
  用如下命令启动Hbase:
  bin/start-hbase.sh
  这个脚本在HBASE_HOME目录里面。
  你现在已经启动Hbase了。Hbase把log记在 logs 子目录里面. 当Hbase启动出问题的时候,可以看看Log.
  Hbase也有一个界面,上面会列出重要的属性。默认是在Master的60010端口上H (HBase RegionServers 会默认绑定 60020端口,在端口60030上有一个展示信息的界面 ).如果Master运行在 node1,端口是默认的话,你可以用浏览器在 http://node:60010看到主界面. .
  一旦Hbase启动,可以看到如何建表,插入数据,scan你的表,还有disable这个表,最后把它删掉。
  可以在Hbase Shell停止Hbase
  $./bin/stop-hbase.sh
  stoppinghbase...............
  停止操作需要一些时间,你的集群越大,停的时间可能会越长。如果你正在运行一个分布式的操作,要确认在Hbase彻底停止之前,Hadoop不能停.
  
4.2独立的zookeeper启动,
  除了启动habse,
  执行:bin/start-hbase.sh启动habse
  你需要自己去运行zookeeper:

${HBASE_HOME}/bin/hbase-daemons.sh {start,stop} zookeeper

你可以用这条命令启动ZooKeeper而不启动Hbase. HBASE_MANAGES_ZK 的值是 false, 如果你想在Hbase重启的时候不重启ZooKeeper,你可以这样。





  
  
1.  安装中出现的问题


1 )
  用./start-hbase.sh启动HBase后,执行hbase shell
# bin/hbase shell
HBase Shell; enter 'help' for list of supported commands.
Version: 0.20.6, rUnknown, Thu Oct 28 19:02:04 CST 2010
接着创建表时候出现如下情况:hbase(main):001:0> create 'test',''c
NativeException: org.apache.hadoop.hbase.MasterNotRunningException: null

  jps下,发现主节点上HMaster没有启动,查理HBase log(logs/hbase-hadoop-master-ubuntu.log)里有下面异常:
FATAL org.apache.hadoop.hbase.master.HMaster: Unhandled exception. Starting shutdown.
java.io.IOException: Call to node1/10.64.56.76:49002 failed on local exception: java.io.EOFException
  
解决:
  从hadoop_home/下面cp一个hadoop/hadoop-core-0.20.203.0.jar到hbase_home/lib下。
  因为Hbase建立在Hadoop之上,所以他用到了hadoop.jar,这个Jar在 lib 里面。这个jar是hbase自己打了branch-0.20-append 补丁的hadoop.jar. Hadoop使用的hadoop.jar和Hbase使用的 必须 一致。所以你需要将 Hbaselib 目录下的hadoop.jar替换成Hadoop里面的那个,防止版本冲突。比方说CDH的版本没有HDFS-724而branch-0.20-append里面有,这个HDFS-724补丁修改了RPC协议。如果不替换,就会有版本冲突,继而造成严重的出错,Hadoop会看起来挂了。
  再用./start-hbase.sh启动HBase后,jps下,发现主节点上HMaster还是没有启动,在HBase log里有下面异常:
FATAL org.apache.hadoop.hbase.master.HMaster: Unhandled exception. Starting shutdown.
java.lang.NoClassDefFoundError: org/apache/commons/configuration/Configuration
解决:
在NoClassDefFoundError,缺少 org/apache/commons/configuration/Configuration
果断给他加一个commons-configuration包,
从hadoop_home/lib下面cp一个hadoop/lib/commons-configuration-1.6.jar到hbase_home/lib下。
  (集群上所有机子的hbase配置都需要一样)

  

  创建表报错:
  ERROR: java.io.IOException: Table Namespace Manager not ready yet, try again later
at org.apache.hadoop.hbase.master.HMaster.getNamespaceDescriptor(HMaster.java:3101)
at org.apache.hadoop.hbase.master.HMaster.createTable(HMaster.java:1738)
at org.apache.hadoop.hbase.master.HMaster.createTable(HMaster.java:1777)
at org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java:38221)
at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2146)
at org.apache.hadoop.hbase.ipc.RpcServer$Handler.run(RpcServer.java:1851)

  

  解决:
  1) 查看集群的所有机器上,
  HRegionServer和HQuorumPeer进程是否都启动?

  2)查看集群的所有机器的logs是不是有错误消息;
  tail -f hbase-hadoop-regionserver-XXX..log
  

2  注意事项:
1)、先启动hadoop后,再开启hbase
2)、去掉hadoop的安全模式:hadoop dfsadmin -safemode leave
3)、把/etc/hosts里的ubuntu的IP改为服务器当前的IP
4)  、确认hbase的hbase-site.xml中
                  hbase.rootdir
                 hdfs://node:49002/hbase
         与hadoop的core-site.xml中
                   fs.default.name
                  hdfs://node:49002/hbase
       红字部分保持一致
  hdfs://localhost:8020/hbase
  否则报错:java.lang.RuntimeException: HMaster Aborted

6)、重新执行./start-hbase.sh之前,先kill掉当前的hbase和zookeeper进程
  7)hosts注意顺序:
  192.168.1.214 master
192.168.1.205 node1
192.168.1.207 node2
192.168.1.209 node3
192.168.1.205 T205.joy.cc

  PS:遇到问题时,先查看logs,很有帮助。
  
  HBase 官方文档,全面介绍hbase安装配置:
  http://www.yankay.com/wp-content/hbase/book.html#hbase_default_configurations
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-86179-1-1.html 上篇帖子: Hadoop 文件系统IO的性能测试 下篇帖子: Hadoop/HIVE错误解决方案汇总
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表