这个过程碰到了很多问题,rowcounter这个命令执行成功花了比较多多时间
1、查看HBase的MapReduce任务的执行
hbase的bin目录下:
$ hbase mapredcp
2、环境变量的导入
永久生效:
在/etc/profile配置
export HADOOP_HOME=/opt/hadoop/
export HBASE_HOME=/opt/module/hbase
在hadoop-env.sh配置
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HBASE_HOME/lib/*
我自己的因为还配置了hive,所以如下:
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HBASE_HOME/lib/*:$HIVE_HOME/conf
yarn-site.xml保持下面的配置即可(起初配了加了hbase的,后面又还原成原来的。)
<property>
<name>yarn.application.classpath</name>
<value>
/opt/hadoop//etc/hadoop:/opt/hadoop//share/hadoop/common/lib/*:/opt/hadoop//share/hadoop/common/*:/opt/hadoop//share/hadoop/hdfs:/opt/hadoop//share/hadoop/hdfs/lib/*:/opt/hadoop//share/hadoop/hdfs/*:/opt/hadoop//share/hadoop/mapreduce/lib/*:/opt/hadoop//share/hadoop/mapreduce/*:/opt/hadoop//share/hadoop/yarn:/opt/hadoop//share/hadoop/yarn/lib/*:/opt/hadoop//share/hadoop/yarn/*
</value>
</property>
3、停止hbase、Hadoop,重启Hadoop,hbase
hbase的bin目录下:stop-hbase.sh ./hbase-daemon.sh start master ./hbase-daemon.sh start regionserver
Hadoop的sbin目录下:stop-all.sh start-dfs.sh start-yarn.sh
4、hbase的bin目录下输入命令统计student
错误命令:
/opt/hadoop/bin/yarn jar /opt/module/hbase/lib/hbase-server-2.4.11.jar rowcounter student
正确命令(要根据自己的hbase版本来):
/opt/hadoop/bin/yarn jar /opt/module/hbase/lib/hbase-mapreduce-2.4.11.jar rowcounter student
5、统计截图如下:
6、使用MapReduce将本地数据导入到hbase
6.1本地创建文件flower.tsv,并上传至虚拟机目录,在此目录下执行hadoop的put命令上传到hadoop的HDFS根目录
hdfs dfs -put flower.tsv /
查看上传文件的hdfs路径
hadoop fs -ls -R
6.2创建表create 'flower','info'
6.3将创建的文件导入此表,在hadoop的安装目录下执行命令(命令同样要根据自己的hbase版本来)
/opt/hadoop/bin/yarn jar /opt/module/hbase/lib/hbase-mapreduce-2.4.11.jar importtsv \
-Dimporttsv.columns=HBASE_ROW_KEY,info:name,info:color flower \
hdfs://hadoop100:9000/user/root/flower.tsv
碰到的问题
问题1、Exception in thread "main" java.lang.ClassNotFoundException: rowcounter
解决:参考:Hbase MapReduce 执行示例代码报错_Round_Yuan的博客-优快云博客
操作命令应该如步骤4
问题2、Container [pid=45706,containerID=container_1684485409862_0001_01_000002] is running 583244288B beyond the 'VIRTUAL' memory limit. Current usage: 183.3 MB of 1 GB physical memory used; 2.6 GB of 2.1 GB virtual memory used. Killing container.
参考:hadoop虚拟内存不足_hadoop虚拟机内存_tianyi6_6的博客-优快云博客
还执行了这个Hadoop运行报错,进入安全模式_hadoop每次启动都进入不安全模式_Hannnnn Qian的博客-优快云博客
但不知道是否有用,而且导致了安全模式的问题。
问题3、zookeeper没有启动起来jps不显示对应的进程
可能是ip改成主机名导致的,对应的zookeeper的conf下的cfg文件配置改成主机名。再重启启动,如下图,成功
问题4、ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet
我的版本也不能删除/opt/module/hbase/lib/client-facing-thirdparty/slf4j-reload4j-1.7.33.jar,否则报错如下
hbase-env.sh
取消这个的注释即可export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP="true" 。
另外看下
hdfs dfsadmin -safemode get #查看安全模式
hdfs dfsadmin -safemode leave #关闭安全模式
因为:未正常关闭集群Hadoop进入安装模式,导致外部无法访问,关闭安全模式即可访问。
问题5、Input path does not exist: hdfs://hadoop100:9000/flower.tsv
找到正确的路径,导入命令中此部分改成hdfs://hadoop100:9000/user/root/flower.tsv