• 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)……
  • 相关阅读:
    Jenkins-------初探
    python--可迭代对象、迭代器和生成器
    python——模块、标准库、第三方模块安装
    python --装饰器通俗讲解
    python--函数、参数、名称空间与作用域、匿名函数、内置函数、闭包
    python--文件操作
    python--基础3(流程语句)
    python--基础2 (数据类型及应用)
    python--基础1(pip,虚拟环境、python编写规范)
    文本处理三剑客简介(grep、awk、sed)
  • 原文地址:https://www.cnblogs.com/lexus/p/2390312.html
Copyright © 2020-2023  润新知