# 准备工作
查看 HBase 的 MapReduce 任务执行时的 ClassPath
[root@hadoop02 hbase-1.3.1]# hbase mapredcp
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/module/hbase-1.3.1/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/module/hadoop-2.7.2/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
/opt/module/hbase-1.3.1/lib/zookeeper-3.4.6.jar:/opt/module/hbase-1.3.1/lib/guava-12.0.1.jar:/opt/module/hbase-1.3.1/lib/metrics-core-2.2.0.jar:/opt/module/hbase-1.3.1/lib/protobuf-java-2.5.0.jar:/opt/module/hbase-1.3.1/lib/hbase-common-1.3.1.jar:/opt/module/hbase-1.3.1/lib/hbase-protocol-1.3.1.jar:/opt/module/hbase-1.3.1/lib/htrace-core-3.1.0-incubating.jar:/opt/module/hbase-1.3.1/lib/hbase-client-1.3.1.jar:/opt/module/hbase-1.3.1/lib/hbase-hadoop-compat-1.3.1.jar:/opt/module/hbase-1.3.1/lib/netty-all-4.0.23.Final.jar:/opt/module/hbase-1.3.1/lib/hbase-server-1.3.1.jar:/opt/module/hbase-1.3.1/lib/hbase-prefix-tree-1.3.1.jar
在环境变量中进行配置
- 在 /etc/profile 中要配置如下语句
# HBASE_HOME export HBASE_HOME=/opt/module/hbase-1.3.1 # HADOOP_HOME export HADOOP_HOME=/opt/module/hadoop-2.7.2
- 在 hadoop-env.sh 中配置
hbase mapredcp
命令所打印出来的 ClassPath。注意在 for 循环之后配置,保证不破坏原本的 ClassPathexport HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/opt/module/hbase-1.3.1/lib/zookeeper-3.4.6.jar:/opt/module/hbase-1.3.1/lib/guava-12.0.1.jar:/opt/module/hbase-1.3.1/lib/metrics-core-2.2.0.jar:/opt/module/hbase-1.3.1/lib/protobuf-java-2.5.0.jar:/opt/module/hbase-1.3.1/lib/hbase-common-1.3.1.jar:/opt/module/hbase-1.3.1/lib/hbase-protocol-1.3.1.jar:/opt/module/hbase-1.3.1/lib/htrace-core-3.1.0-incubating.jar:/opt/module/hbase-1.3.1/lib/hbase-client-1.3.1.jar:/opt/module/hbase-1.3.1/lib/hbase-hadoop-compat-1.3.1.jar:/opt/module/hbase-1.3.1/lib/netty-all-4.0.23.Final.jar:/opt/module/hbase-1.3.1/lib/hbase-server-1.3.1.jar:/opt/module/hbase-1.3.1/lib/hbase-prefix-tree-1.3.1.jar
- 分发到其他集群
[root@hadoop02 hbase-1.3.1]# xsync /opt/module/hadoop-2.7.2/etc/hadoop/hadoop-env.sh
- 重启 hbase,hadoop 服务
[root@hadoop02 hbase-1.3.1]# stop-hbase.sh
# 注意 YARN 要在部署了 ResourceManager 的机器上启动和关闭
[root@hadoop03 hbase-1.3.1]# stop-yarn.sh
[root@hadoop02 hbase-1.3.1]# stop-dfs.sh
[root@hadoop02 hbase-1.3.1]# start-dfs.sh
# 注意 YARN 要在部署了 ResourceManager 的机器上启动和关闭
[root@hadoop03 hbase-1.3.1]# start-yarn.sh
# 等待半分钟,等待 hadoop 退出安全模式了在启动 hbase。安全模式状态可在 hadoop 的 web 端查看
[root@hadoop02 hbase-1.3.1]# start-hbase.sh
- 查看服务是否正常启动
[root@hadoop02 hbase-1.3.1]# jps
- 在 /etc/profile 中要配置如下语句
# 官方案例一:统计 Student 表中有多少行数据
运行命令
[root@hadoop02 hbase-1.3.1]# /opt/module/hadoop-2.7.2/bin/yarn jar lib/hbase-server-1.3.1.jar rowcounter student |
运行结果
# 官方案例二:使用 MapReduce 将本地数据导入到 HBase
在本地创建一个 tsv 格式的文件:fruit.tsv。分隔符必须是
\t
1001 Apple Red 1002 Pear Yellow 1003 Pineapple Yellow
将文件上传到 hdfs 里
[root@hadoop02 hbase-1.3.1]# hadoop fs -put fruit.tsv /
创建 Hbase 表
hbase(main):002:0> create 'fruit','info'
执行 MapReduce 命令,将 fruit.tsv 文件导入到 HBase 的 fruit 表中
/opt/module/hadoop-2.7.2/bin/yarn jar lib/hbase-server-1.3.1.jar importtsv -Dimporttsv.columns=HBASE_ROW_KEY,info:name,info:color fruit hdfs://hadoop02:9000/fruit.tsv
运行结果