2015-01-26 49 views
1

當Hadoop連接到一些數據源(如MangoDB或MySQL)時,它是否將來自這些源的數據複製到Hadoop文件系統,或者它只是與該遠程數據一起工作?我的期望是Hadoop會將這些數據複製到它自己的文件系統中;否則,在我看來,Hadoop的所有優勢都停留在分散在不同數據節點上的塊中的數據上。我對麼?Hadoop是否從它連接的數據源複製數據?

謝謝

回答

0

是的,MR作業總是從HDFS獲取數據。例如,如果你有一些MySQL表格,它包含了一些對你的MR作業至關重要的元數據,那麼你需要將這些數據存儲在HDFS中,不管是序列化的還是結構化的(例如tsv)。 然後您可以使用DistributedCache.getLocalCacheFiles導入這些文件並使用元數據。

0

這種情況下的常見工作流程是使用Apache Sqoop從數據庫源啓動到選擇的HDFS目錄(例如,也可以複製到Hive表)來啓動高效並行的複製操作。

執行復制操作時,正在寫入HDFS的數據並行分發到HDFS Datanodes。一旦完成,它就可以被諸如Mapreduce,Hive等Hadoop引擎所使用。

0

否,如果您有數據庫作爲輸入源,則hadoop不會將數據複製到hdfs中。