HBase与MapReduce整合/HBase和Hive整合 nosql/HBase与 Sqoop整合

一、HBase与MapReduce整合
如何将海量数据导入到HBase表
开发MapReduce程序
HBase与MapReduce整合
##   tsv格式的文件:用制表符‘\t’分割字段形成的文件
##   csv格式的文件:用逗号','分割的字段形成的文件


##将HDFS上面的文件数据直接导入到Hbase




1.启动hbase


2)创建一张表
create 'teacher','info'
3)设置环境变量
export HBASE_HOME=/opt/modules/cdh/hbase-0.98.6-cdh5.3.6
export HADOOP_HOME=/opt/modules/cdh/hadoop-2.5.0-cdh5.3.6
export HADOOP_CLASSPATH=`${HBASE_HOME}/bin/hbase mapredcp` 
##注意:设置的环境变量只在当前窗口有效
【永久生效方式:】
a.创建HBase的hbase-site.xml到Hadoop的conf目录
ln -s  /opt/modules/cdh/hbase-0.98.6-cdh5.3.6/conf/hbase-site.xml /opt/modules/cdh/hadoop-2.5.0-cdh5.3.6/etc/hadoop/hbase-site.xml
b.在Hadoop中添加 HBase jar
第一种:在hadoop-env.sh中添加HADOOP_CLASSPATH环境变量,value为HBase的lib文件夹下的所有jar包
if [ "$HADOOP_CLASSPATH" ];
then
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/opt/modules/cdh/hbase-0.98.6-cdh5.3.6/lib/*
else
export HADOOP_CLASSPATH=/opt/modules/cdh/hbase-0.98.6-cdh5.3.6/lib/*
fi


第二种:在系统的profile或用户的环境变量文件*.profile文件内容中添加HADOOP_CLASSPATH

第三种:直接将HBase的lib目录中所有jar包复制到hadoop的share/hadoop/common/lib或者share/hadoop/mapreduce等目录中


4)主要使用到的jar包
##apache
yarn jar $HBASE_HOME/lib/hbase-server-0.98.6-hadoop2.jar
##cdh
$HADOOP_HOME/bin/yarn jar $HBASE_HOME/lib/hbase-server-0.98.6-cdh5.3.6.jar


//执行导入命令
$HADOOP_HOME/bin/yarn jar /opt/modules/cdh/hbase-0.98.6-cdh5.3.6/lib/hbase-server-0.98.6-cdh5.3.6.jar importtsv -Dimporttsv.columns=HBASE_ROW_KEY,info:name,info:age,info:sex,info:address,info:phone teacher  hdfs://hadoop.beifeng.com:8020/input/hbase/teacher.txt


//执行统计行数的命令
$HADOOP_HOME/bin/hadoop jar /opt/modules/cdh/hbase-0.98.6-cdh5.3.6/lib/hbase-server-0.98.6-cdh5.3.6.jar rowcounter teacher


6)##先将hdfs文件转成habse的存储文件就是HFile文件,再导入hbase表
## 这种方式再加载海量数据时效率会更告,普遍使用


##先创建一个空表 teacher2
create  'teacher2','info'


##将hdfs文件转成HFile文件
$HADOOP_HOME/bin/yarn jar /opt/modules/cdh/hbase-0.98.6-cdh5.3.6/lib/hbase-server-0.98.6-cdh5.3.6.jar  importtsv -Dimporttsv.bulk.output=/user/hbase/ouput -Dimporttsv.columns=HBASE_ROW_KEY,info:name,info:age,info:sex,info:address,info:phone teacher2  hdfs://hadoop.beifeng.com:8020/input/hbase/teacher.txt


##将HFile文件加载到HBase表(completebulkload)
$HADOOP_HOME/bin/yarn jar /opt/modules/cdh/hbase-0.98.6-cdh5.3.6/lib/hbase-server-0.98.6-cdh5.3.6.jar completebulkload  /user/hbase/ouput teacher2




二、HBase和Hive整合  nosql
##HBase用来存储海量数据,而统计分析交给Hive来完成


1.##设置环境变量
$ export HIVE_HOME=/opt/modules/cdh/hive-0.13.1-cdh5.3.6
$ export HBASE_HOME=/opt/modules/cdh/hbase-0.98.6-cdh5.3.6


2.##设置软链接将HBase中的jar包供Hive使用(在hive的lib目录下设置hbase的jar包的软链接)
##CDH版本
ln -s $HBASE_HOME/lib/hbase-common-0.98.6-cdh5.3.6.jar $HIVE_HOME/lib/hbase-common-0.98.6-cdh5.3.6.jar 


ln -s $HBASE_HOME/lib/hbase-server-0.98.6-cdh5.3.6.jar $HIVE_HOME/lib/hbase-server-0.98.6-cdh5.3.6.jar


ln -s $HBASE_HOME/lib/hbase-client-0.98.6-cdh5.3.6.jar  $HIVE_HOME/lib/hbase-client-0.98.6-cdh5.3.6.jar


ln -s $HBASE_HOME/lib/hbase-protocol-0.98.6-cdh5.3.6.jar $HIVE_HOME/lib/hbase-protocol-0.98.6-cdh5.3.6.jar


ln -s $HBASE_HOME/lib/hbase-it-0.98.6-cdh5.3.6.jar $HIVE_HOME/lib/hbase-it-0.98.6-cdh5.3.6.jar


ln -s $HBASE_HOME/lib/htrace-core-2.04.jar $HIVE_HOME/lib/htrace-core-2.04.jar


ln -s $HBASE_HOME/lib/hbase-hadoop2-compat-0.98.6-cdh5.3.6.jar $HIVE_HOME/lib/hbase-hadoop2-compat-0.98.6-cdh5.3.6.jar


ln -s $HBASE_HOME/lib/hbase-hadoop-compat-0.98.6-cdh5.3.6.jar $HIVE_HOME/lib/hbase-hadoop-compat-0.98.6-cdh5.3.6.jar


ln -s $HBASE_HOME/lib/high-scale-lib-1.1.1.jar $HIVE_HOME/lib/high-scale-lib-1.1.1.jar
3.启动hive  并创建表
$ bin/hive  --service  hiveserver2  &
bin/hive  --service   metastore &




CREATE TABLE hive2hbase_emp(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int

STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:ename,info:job,info:mgr,info:hiredate,info:sal,info:comm,info:deptno")
TBLPROPERTIES ("hbase.table.name" = "emp");


##从已有的hive表中将数据导入到hive2hbase_emp
insert into  table  hive2hbase_emp  select *  from db0801.emp;


##注意:不能直接加载数据到hive2hbase_emp






三、HBase与 Sqoop整合
将mysql中的数据导入到hbase
## 在mysql中创建一张表


##修改sqoop-env.sh配置
export HBASE_HOME=/opt/modules/cdh/hbase-0.98.6-cdh5.3.6




##执行sqoop导入数据
bin/sqoop import \
--connect jdbc:mysql://hadoop.beifeng.com:3306/test  \
--username root \
--password root123 \
--table so_detail \
--columns "id,order_id,product_id" \
--column-family "info" \
--hbase-create-table \
--hbase-row-key "id" \
--hbase-table "so_detail_hbase" \
--num-mappers 1 \
--split-by id
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值