歡迎您光臨本站 註冊首頁

關於Hadoop你需要知道的幾件事情

←手機掃碼閱讀     火星人 @ 2014-03-04 , reply:0

關於Hadoop你需要知道的幾件事情

在當今的技術領域,大數據是個熱門的IT流行詞語。為了減輕處理大量數據時的複雜度,Apache開發了Hadoop——一個可靠的、可擴展的分散式計算框架。Hadoop特別適合大數據處理任務,並且它可以利用其分散式的文件系統,可靠並且低成本的將數據塊複製到集群中的節點上去,從而使數據能在本地機器上進行處理。Anoop Kumar從十個方面講解了利用Hadoop處理大數據所需要的技巧。

對於從HDFS中導入/導出數據方面,Anoop指出,在Hadoop的世界中,數據可以從多種不同的來源中被導入到Hadoop分散式文件系統中(HDFS)。在向HDFS中導入數據后,將通過用MapReduce或者其他語言比如Hive、Pig等來對數據進行某一層次的處理。

Hadoop系統不僅提供了處理大量數據的靈活性,並且同時也可以對數據進行過濾和聚合等處理,並且被處理轉換過的數據可以導出到外部資料庫或者其他使用Sqoop的資料庫中。從MySQL、SQL Server或者MongoDB等其他資料庫中導出數據也是一個強大的功能。這樣的益處是可以更好的控制數據。

第二個方面是HDFS中的數據壓縮,Hadoop中的數據存儲在HDFS上,並且支持數據的壓縮與解壓縮。數據壓縮可以通過一些壓縮演算法來實現,例如bzip2、gzip、LZO等。不同的演算法可以根據其功能在不同的情況下使用,比如壓縮/解壓縮的速度或者文件分割的能力等。

在Hadoop的轉換方面,Hadoop是一個用於提取和轉換大量數據的理想環境。同時,Hadoop提供了一個可擴展、可靠的並且分散式的處理環境。通過使用MapReduce、Hive和Pig等,可以用很多種方式來提取並轉換數據。

一旦輸入數據被導入或放置到HDFS中,之後Hadoop集群可以被用於并行轉換大型數據集。正如剛才提到的,數據轉換可以通過可用工具來實現。例如,如果你想把數據轉換為一個被製表符分開的文件,那麼MapReduce則是最好的工具之一。同理,Hive和Python可以被用於清理和轉換地理事件的數據資料。

對於如何實現通用的任務,Anoop介紹說,有很多通用的任務需要在數據的日常處理中被完成,並且其使用頻率是很高的。一些如Hive、Pig和MapReduce等可用的語言可以協助你完成這些任務,並使你的生活更加輕鬆。

有時候一個任務可以通過多種方式來實現。在這種情況下開發人員或者架構師得做出正確的決定,從而實施最正確的方案。例如,Hive和Pig提供了數 據流和查詢之間的一個抽象層,並且提供了它們編譯產生的MapReduc工作流。MapReduce的功能可以用於擴展查詢。Hive可以用 HiveQL(像SQL一樣的說明性語言)來建立並且分析數據。並且,可以通過在Pig Latin中寫入操作來利用Pig語言。

在Hadoop組合大量數據,一般情況下,為了得到最終的結果,數據需要加入多個數據集一起被處理和聯合。 Hadoop中有很多方法可以加入多個數據集。MapReduce提供了Map端和Reduce端的數據連接。這些連接是非平凡的連接,並且可能會是非常 昂貴的操作。Pig和Hive也具有同等的能力來申請連接到多個數據集。Pig提供了複製連接,合併連接和傾斜連接(skewed join),並且Hive提供了map端的連接和完整外部連接來分析數據。一個重要的事實是,通過使用各種工具,比如MapReduce、Pig和 Hive等,數據可以基於它們的內置功能和實際需求來使用它們。

如何在Hadoop分析大量數據,Anoop指出,通常,在大數據/Hadoop的世界,一些問題可能並不復 雜,並且解決方案也是直截了當的,但面臨的挑戰是數據量。在這種情況下需要不同的解決辦法來解決問題。一些分析任務是從日誌文件中統計明確的ID的數目、 在特定的日期範圍內改造存儲的數據、以及網友排名等。所有這些任務都可以通過Hadoop中的多種工具和技術如MapReduce、Hive、Pig、Giraph和Mahout等來解決。這些工具在自定義常式的幫助下可以靈活地擴展它們的能力。

例如,圖和機器學習的問題可以通過使用一個Giraph框架被解決,而不是通過MapReduce任務解決,這樣可以避免寫複雜的演算法。Giraph框架在解決圖和機器學習問題時比MapReduce任務更加有用,因為一些問題可能需要運用迭代的步驟來解決。

Hadoop世界中的調試,調試在任何一個開發過程中都永遠是個重要的過程。Hadoop環境中對於調試的需求和對Hadoop本身的需求一樣重要。有一種說法是格式錯誤和意外的輸入是很常見的,這將造成一切事務在一個較高的規模上中斷。這也是處理大規模非結構化數據中的一個不幸的缺點。

雖然,單個任務被隔離並且給予了不同組的輸入,但當跟蹤各種事件時,它需要理解每個任務的狀態。這可以通過多種可用的工具和技術來支持調試 Hadoop任務的過程,從而實現目標。例如,為了避免任何工作失敗,有一種方法可以跳過壞記錄,並且可以使用MapReduce中的計數器來跟蹤不良記 錄等。

易於控制的Hadoop系統,產品開發是一項重要的活動,系統維護也是同樣重要的,它有助於決定產品的未來。在 Hadoop中,環境設置、維護和環境監測、以及處理和調整MapReduce任務都非常需要從Hadoop系統中受益。為此Hadoop提供了很大的靈 活性來控制整個系統,Hadoop的可在三種不同的模式中進行配置:即獨立模式、偽分散式模式和完全分散式模式。

在Ganglia框架的幫助下,整個系統可以被監測並且能對節點的健康狀態進行跟蹤。另外,參數配置功能提供了對MapReduce的任務控制。Hadoop系統有很好的靈活性可以輕鬆搞定整個系統的級別控制。

可擴展的持久性。有很多選擇可以處理海量的結構化和非結構化的數據,但是儲存海量數據的可擴展性仍然是數據世界中的主要問題之一。Hadoop系統打算用Accumulo來緩解這個問題。Accumulo是被谷歌的BigTable的設計所啟發的,並且建立在Hadoop、Zookeeper 和Thrift的基礎之上,同時它給Hadoop提供可擴展的、分散式的、且基於單元持久性的數據備份。Acumulo帶來了一些BigTable設計之上的改進,以一種基於單元的訪問控制和伺服器端的編程機制來幫助在數據管理過程中修改不同點的鍵/值對。

Hadoop中的數據讀取和寫入發生在HDFS上。HDFS即Hadoop的分散式文件系統,並且是具有容錯性 的分散式文件系統。它在對進行文件流讀取的大型文件進行了優化,而且和I/O吞吐量相比,更傾向於低延遲。有很多可以高效的從HDFS中讀取和寫入文件的 方法,比如說API文件系統、MapReduce以及高級串列化庫等。
                                
轉自:infoQ                  

本文來自ChinaUnix新聞頻道,如果查看原文請點:http://news.chinaunix.net/opensource/2013/1127/3025751.shtml
《解決方案》

恩,批處理。。storm適合實時數據處理。

[火星人 ] 關於Hadoop你需要知道的幾件事情已經有265次圍觀

http://coctec.com/docs/service/show-post-3852.html