Linux/Mac 下伪分布式 HBase 开发测试环境

准备工作

Mac 下不要使用brew 来安装Hadoop相关软件,因为各组件之间的版本可能不兼容:

http://hbase.apache.org/book.html#configuration

建议使用CDH 的发行版二进制套件,目前最新版cdh5.10.1,依次下载:

https://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.10.1.tar.gz

https://archive.cloudera.com/cdh5/cdh/5/hbase-1.2.0-cdh5.10.1.tar.gz

JDK 1.7

安装与设置 JAVA_HOME,略

java -version

SSH

为了确保在远程管理Hadoop以及Hadoop节点用户共享时的安全性, Hadoop需要配置使用SSH协议,确保这一步能正常:

ssh localhost

MC首先在系统偏好设置->共享->打开远程登录服务->右侧选择允许所有用户访问

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

Hadoop HDFS 伪分布式运行

修改hadoop-env.sh,指定JAVA_HOME,这里是Mac下特有的表达方式:

export JAVA_HOME="$(/usr/libexec/java_home)"

修改core-site.xml,HDFS端口、日志

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:8020</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/var/hdfslog/</value>
        <description>Abase for other temporary directories.</description>
    </property>
</configuration>

修改hdfs-site.xml,HDFS数据目录、复制因子

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/var/hdfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/var/hdfs/data</value>
    </property>
</configuration>

虽然只需要配置 fs.defaultFS 和 dfs.replication 就可以运行(官方教程如此),不过若没有配置 hadoop.tmp.dir 参数,则默认使用的临时目录为 /tmp/hadoo-hadoop,而这个目录在重启时有可能被系统清理掉,导致必须重新执行 format 才行。所以我们进行了设置,同时也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否则在接下来的步骤中可能会出错。

格式化hdfs文件系统:

hdfs namenode -format

接着运行HDFS服务,开启 NameNode 和 DataNode 守护进程,通过jps查看进程状态

/usr/local/server/hadoop/sbin/start-dfs.sh
jps
15468 SecondaryNameNode
15358 DataNode
15267 NameNode

dfshealth 界面
http://localhost:50070/

Hadoop YARN(MapReduceV2) 伪分布式

修改:mapred-site.xml:

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

修改:yarn-site.xml:

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

启动YARN,此时通过jps查看应该包含以下组件:

/usr/local/server/hadoop/sbin/start-yarn.sh
jps
15468 SecondaryNameNode
15358 DataNode
15691 NodeManager
15592 ResourceManager
15267 NameNode

Hadoop Cluster GUI
http://localhost:8088/

使用Hadoop自带的Map Reduce例子测试是否成功:

hadoop jar /usr/local/server/hadoop/share/hadoop/mapreduce2/hadoop-mapreduce-examples-2.6.0-cdh5.5.1.jar pi 1 3

Hbase 伪分布式安装

环境变量与PATH

修改:hbase-env.sh,指定 JAVA_HOME

export JAVA_HOME="$(/usr/libexec/java_home)"

修改:hbase-site.xml

<configuration>
<property>
    <name>hbase.rootdir</name>
    <value>hdfs://localhost:8020/hbase</value>
</property>
<property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/usr/local/var/zookeeper</value>
</property>
<property>
  <name>hbase.cluster.distributed</name>
  <value>true</value>
</property>
</configuration>
<property>
    <name>hbase.zookeeper.quorum</name>
    <value>localhost</value>
</property>

启动HBase,此时通过jps查看应该包含以下组件:

/usr/local/server/hbase/bin/start-hbase.sh   
jps
39920 ResourceManager
42381 HQuorumPeer
40018 NodeManager
39793 SecondaryNameNode
42433 HMaster
39683 DataNode
39592 NameNode
42539 HRegionServer

HBase Web GUI
http://localhost:60010