第一章:
爲什麼不用數據庫對大量硬盤上的大規模數據進行批量分享,而要用map reduce呢?
關乎計算機硬盤的發展趨勢:尋址時間的提升遠不敵傳輸速率的提升。尋址是導致硬盤操作延遲的主要原因。
另,M/R對半結構、非結構話數據更有效。
第二章:
氣象數據集 詳細實戰解析
第四章:
序列化:將結構化對象轉化爲字節流以便在網絡上傳輸或寫到磁盤,經常出現在進程間通信和永久存儲。
Hadoop多個節點的進程間通信通過RPC,RPC序列化格式4大理想屬性:
緊湊;
快速;
可擴安裝;
支持互操作。
Hadoop使用自己的序列化格式Writable,緊湊速度快,但不太容易用Java以外的語言進行擴展或使用。
4.3 序列化 一節詳細解析了Writable各種子類(primitive的,集合類型的,nullWritable,ObjectWritable,GenericWritable……)。
除了以上Hadoop提供的非常有用的Writable,我們也可根據自己的需求構造新的定製實現,完全控制二進制表示和排序順序。由於Writable是MapReduce數據路徑的核心,挑戰二進制表示能對性能產生顯著效果。
範例4-7演示了定製Writable TextPair的實現,以及“比較”的改進(乾貨。簡潔演示了避開反序列化進行TextPair的設計和辦法)。
Avro是一個獨立於編程語言的數據序列化系統。
接下來是一個很有參考價值的實戰示例,但沒細看。回頭參考。
(第四章從這裏開始到章末,未細看。)
哪些應用領域不適合運行在hdfs上?
第五-八章:沒什麼意思,翻過去了,沒細看。
第九章:重要。非常全面地介紹了hadoop配置,對實戰具有很好的指導意義
9.4.5 hadoop其他屬性
也是一些常見有用的屬性。包括:
1 集羣成員(hosts)
2 緩衝區大小(4KB no ok,128 KB常用)
3 HDFS塊大小:64M?128/256更有助於降低namenode內存壓力並向mapper傳輸更多數據。
4 保留的存儲空間
5 回收站
6 作業調度:可將默認的FIFO替換爲一個具有更多特性的調度器。
7 慢啓動reduce
8 任務內存限制(重要)
在共享集羣上不允許問題MR影響集羣中各節點的正常工作。
可通過設定mapred.child.java.opts參數並鎖定(final修飾)來控制mr任務對內存的使用量,但並不總是可行。
比如總有一些合理因素允許部分作業佔用更多內存。
另外,有些任務能創建新進程,且其內存使用不受上述參數約束,例如streaming和管道作業就是如此。
怎麼辦?怎麼加強任務的內存限制管理?兩種機制:
第十章:管理Hadoop
重要。不過只瀏覽了一下。有時間最好參考着實操一下。
第十一章:PIG略過
第十二章:HIVE
回頭來看
第十三章:HBASE
回頭來看
第十四章:Zookeeper
(未細看。非常值得抽時間來細看。包含一個領導者選舉示例;包含zk自身實現,其中展示了很多很多分佈式開發相關的議題;包括使用zk爲服務提供支持……應回來細看)
使用zk並不能避免分佈式系統固有的“部分失敗”,但它提供一組工具使你在構建分佈式應用時能對部分失敗進行正確處理。
第十五章:SQOOP略過
第十六章:實例學習
1 Last.fm 簡單實用,基本應用。已看透。
2 hive:略過時陳舊,且和當前需求關係不密切,翻過。
3 Nutch:成就。略過。
4 Rackspace 沒細看
5 cascading 沒細看。
6 萬億數量級排序——沒好好看。
7 pig+wukong探索十億數量級邊的網絡圖
略過
附錄沒啥可看。沒看。