關於使用 MongoDB Connector for Hadoop 的經驗和教訓

來源:互聯網
上載者:User

標籤:mongo   hadoop   Distributed File System   hive   etl   

參考文章:Mongo hadoop connector https://github.com/mongodb/mongo-hadoopwikihttps://github.com/mongodb/mongo-hadoop/wikippthttp://www.slideshare.net/mongodb/hadoop-webinar?from_embed_lead_cta=true&tracking_id=167b463f3b941754教程http://docs.mongodb.org/ecosystem/tools/hadoop/
部署的步驟就很簡單了,總結如下:1:下載wget https://github.com/mongodb/mongo-hadoop/archive/r1.4.0-rc0.tar.gz
2:編譯解壓之後按照文檔說明編譯./gradlew jar編譯成功之後,我們需要找到三個jar包,在core/build/libs和hive/build/libs下面有兩個jar包如下:mongo-hadoop-core-1.4-rc0.jarmongo-hadoop-hive-1.4-rc0.jar還有一個jar包要去官網上下,如下:http://mongodb.github.io/mongo-java-driver/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 的經驗和教訓

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.