Hadoop & HBase安装笔记

Hadoop & HBase安装笔记 – Pro Evolution Slawdan

Hadoop & HBase安装笔记

目标

在两台机器上安装Hadoop和HBase作为实验,两台机器分别作为主从。

背景环境

  • 对Hadoop,HBase有一定了解
  • CentOS 5
  • JDK 1.6.0_25
  • Hadoop 0.20.205.0
  • HBase 0.90.4

安装Hadoop

主要参考:官方集群建立文档 http://hadoop.apache.org/common/docs/current/cluster_setup.html

次要参考:

拓扑结构:

  • A,B两台机器,A为NameNode + JobTracker + DataNode + TaskTracker, B仅为DataNode + TaskTracker

基本步骤:

按官方文档走即可,注意调整各种配置。在A上配置完毕以后,直接scp hadoop安装目录(包括conf)到B的对应目录,然后从A bin/start-all 启动。主从配置完全取决于 conf/masters 和 conf/slaves。

碰到的各种问题:

  1. 坑爹的公司服务器的SSH配置: 老实用rsa/dsa就好了……实在不行单开一个sshd服务也行。
    1. ssh参数: -i PrivKey文件地址 -p 端口号
    2. scp参数:-i PrivKey文件地址 -P 端口号
    3. sshd_config里确认两台机器的IP地址以及localhost都被允许:
      1. AllowUsers hadoop_user@127.0.0.1 hadoop_user@A hadoop_user@B
      2. AllowUsers支持IP通配符 “*, ?”
    4. service sshd reload 重启sshd
  2. cfengine对各种配置文件的保护:
    1. chattr +i 锁定修改
    2. 锁定以后最好再检查一遍防止正好碰上cfengine同步
    3. 需要重新修改的时候用chattr -i 解锁,解锁之前最好先备份一下……
  3. 如果在root用户下启动,可能会碰到 -jvm wrong parameter blahblah,可以修改 bin/hadoop, 找到 if [[ $EUID -eq 0 ]]; then,改掉子句里的参数列表,跟 else 子句相同即可。主要原因是root用户的 EUID 为0;以及jvm不同版本的启动参数不太相同导致。
  4. 一定要下载 0.20.205.0 以后版本,合并了可以和 HBase 兼容的代码分支 0.20-append。 启动的时候会报很多Warning $HADOOP_HOME deprecated blahblah,不需理会。
  5. 如果用 bin/start-all 偷懒方式启动,有可能因为配置错误什么的导致某些服务起不来,但不会有任何错误提示。最好使用 netstat -nlp | grep java 看下端口号50030, 50010, 50070, 还有JobTracker的自定义端口是否已经被监听了,如果没有,可以用对应的启动脚本单独启动,这样会输出具体的错误。
  6. 启动之前一定要修改 ulimit 的 -n 51200 和 -u unlimited 以上。否则会出现各种Fetch Failed。

安装HBase

前提:

必须已经正确安装了Hadoop,但可以不启动JobTracker,HBase有自己的MapRed

主要参考:

安装步骤:

建议先启动Standalone玩儿一下,然后再往Hadoop里配置,依照官方文档即可。

拓扑结构:

B为master,A和B均为regionserver

碰到的各种问题:

  1. 官方文档里说明了HBase与Hadoop的适配版本,主要是 0.20-append 分支是否合并进hadoop主干的问题。hadoop 0.20.205.0 已经合并,所以一定要用 0.20.205.0 以后版本的hadoop。
  2. 启动之前一定要修改 ulimit -n 51200 和 ulimit -u 51200 以上。
  3. 官方文档里提到的需要替换 lib/hadoop-core-….jar 的问题一定要做。否则启动时会出现 EOFException。由于实际版本号不同,所以直接把原jar移走,新jar放入即可。
  4. 0.20.205.0 需要同时把 hadoop/lib 里的commons-configuration-1.6.jar 也考到 hbase/lib里。否则启动master时会出现master.HMaster exception of “NoClassDefFoundError” (参考 http://javoft.net/2011/09/hbase-hmaster-%E6%97%A0%E6%B3%95%E5%90%AF%E5%8A%A8-call-to-failed-on-local-exception/)
  5. 这两个jar最好设置与原来的jar相同的属性: rwsrwsrwt:
    1. 设置方法: chmod a+x, chmod ug+s, chmod o+t
  6. bin/start-hbase 会自动启动一个zookeeper。当然可以自行配置zookeeper。
  7. bin/stop-hbase 貌似只会停止zookeeper和master, 在 B(master)上会遗留 regionserver,可以kill 进程或者 bin/hbase-daemon.sh stop regionserver
  8. 同样使用 netstat -nlp | grep java 检查端口号,HBase相关服务端口均以 600开头。

Happy Starting

TODO:

  • ZooKeeper
  • 各种监视脚本
  • Hadoop NameNode单点
  • HBase master单点
  • 修改集群需要停机……
  • 测试各种文件大小空间占用
  • 各种文件大小和负载下的Benchmark
  • 在超过5台服务器上配置集群。貌似由于现在只有2台机器共4块硬盘,而默认dfs.replication为3,所以造成硬盘随机读写,简单benchmark时的IO吞吐低的离谱(w:30M/s, r: 150M/s)……
原文地址:https://www.cnblogs.com/lexus/p/2390312.html