标签:mongo hadoop 分布式文件系统 hive etl
参考文章:
Mongo hadoop connector
wiki
ppt
教程
部署的步骤就很简单了,总结如下:
1:下载
2:编译
解压之后按照文档说明编译
./gradlew jar
编译成功之后,我们需要找到三个jar包,在core/build/libs和hive/build/libs下面有两个jar包如下:
mongo-hadoop-core-1.4-rc0.jar
mongo-hadoop-hive-1.4-rc0.jar
还有一个jar包要去官网上下,下载地址如下:
mongo-java-driver-2.13.2.jar
3:部署和配置
将三个jar包分别拷贝到你的这几个位置下
每个节点的:
$HADOOP_HOME/share/hadoop/mapreduce
$HADOOP_HOME/lib
$HIVE_HOME/lib
在hive-site.xml上得hive.aux.jars.path配置上追加你 mongo-hadoop-hive-1.4-rc0.jar
文件
4:建表语句如下:
create table test
(
id string,
title string,
desc string,
uid string,
cid string,
attach struct<atype:string,itemid:string,bizid:string>,
weight string,
status string,
loc struct<type:string,coordinates:string>,
created string,
modified string
)
stored by ‘com.mongodb.hadoop.hive.MongoStorageHandler‘
with serdeproperties(‘mongo.columns.mapping‘=‘{"id":"_id","title":"title","desc":"desc","uid":"uid","cid":"cid","attach.atype":"attach.atype","attach.itemid":"attach.itemid","attach
.bizid":"attach.bizid","weight":"weight","status":"status","loc.type":"loc.type","loc.coordinates":"loc.coordinates","created":"created","modified":"modified"}‘)
tblproperties(‘mongo.uri‘=‘mongodb://your_mongo_ip:27017/database_name.collection_name‘);
注意mapping里面,需要将mongo里面BSON的字段和Hive表的字段对应起来。
5:HUE
如果你使用hue,那么请同步更新它的hive-site.xml文件,并且重启HiveMetaStore和HiveServer2这两个进程。
然后重启HUE。现在就可以在HUE中查询Mongdb的表了。
6:特别注意
建好表之后,如果你连接的是生产环节的主库,而你又想修改这个表,请不要直接drop Hive中的MongoDB表。我曾经因为建表的时候,填写的路径是主库。在drop了Hive的mongo表之后,mongoDB中的表也被drop了。
mongo-hadoop-connector在hive中建立的表,实际上是将mongo的数据,映射到了hive的表里,从而可以使用hive的sql来进行查询,但是实际上数据还是在mongodb中。所以如果要删除表,请将jar文件移除以断开连接之后,再删除hive表,否则会将mongo里面的数据直接删除了。
当然运维没有做好mongodb权限管理也是一个因素。
结论:
公司的生产环境是hadoop2.5.1+spark1.4+hive0.13.1,而mongo-hadoop-core-1.4-rc0.jar对这套环境,基本上可以很好的支持(仅仅测试过一些简单的SQL语句)。
安全起见:
(1)使用这个插件的时候,请连接mongo的从库。
(2)删除hive里的mongo表的时候,请删除hive-site.xml里的jar包配置,在断开hive表对mongo的连接之后,再小心操作!如果不断开,直接drop,那么mongo里的表数据也会被drop。最重要的是,你们的运维要提前做好mongoDB的权限配置,给只读权限,以防止误操作。
(3)综合来讲,只要配置好后,这个插件可以很好的节省了ETL的工作,使得hive可以直接在mongo之上执行hivesql的查询,一定注意数据安全。
版权声明:本文为博主原创文章,未经博主允许不得转载。
关于使用 MongoDB Connector for Hadoop 的经验和教训
标签:mongo hadoop 分布式文件系统 hive etl
原文地址:http://blog.csdn.net/djy572568633/article/details/46654857