搭建Hadoop与HBase集群的反思与总结

2162 查看

这几天应老师要求,在三台机器上搭建Hadoop环境与HBase环境,其中遇到不少问题,直到今日才基本运行成功。此处不讨论配置细节,只是把需要注意的问题列出作参考。

  • 机器:

    • psyDebian (Debian 7.5)
    • centos1 (centos 6.5)
    • centos2 (centos 6.5)
  • java: java-1.6.0-openjdk
  • hadoop: 2.2.0
  • hbase: 0.98.3 (其自带的hadoop包版本也为2.2.0)

  1. 三台机器时间同步,防火墙(iptables)关闭
  2. 设置hostname。对于Debian,修改/etc/hostname;对于centos,修改/etc/sysconfig/network
  3. 设置/etc/hosts文件。删除其中的127.0.0.1 主机名以及127.0.1.1 主机名(如果有的话);127.0.0.1 localhost可以保留。添加各台机器的IP地址及主机名。
  4. 设置每台机器之间的ssh无密码访问。必须保证两两机器之间无密码访问成功。
  5. 调整机器的限制。详情见此处(官网)
  6. 设置hadoop中的配置文件hadoop-env.sh,需设置JAVA_HOME
  7. hbase中配置文件hbase-env.sh,需设置JAVA_HOME;由于使用自带zookeeper,需要设置HBASE_MANAGES_ZK=true
  8. core-site.xmlhdfs-site.xmlhbase-site.xml核心文件的配置。相关配置可见此处
  9. 将hadoop与hbase部署到各结点中。注意保持每个节点中的配置文件一致性,以及有效性(比如JAVA_HOME路径,如果机器不同的话需要填写本地的Java路径;还有hdfszookeeper的本地存储路径)
  10. 先启动hdfs,再启动hbase

此次搭建后在hbase-hadoop-master-psyDebian.out中以及创建表时都有警告:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/hbase/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.

是jar包重复问题。但如果我删除了hadoop中的或者hbase中的一个,在启动或停止时hadoop或hbase都会报错。目前并未解决该包重复问题,但似乎并不影响创建表等hbase的使用。