天天看點

hadoop随記(一)

    現在是一個大資料的年代,每天全球已電子方式存儲資料的資料總量非常大。下面是部分例子:

     1,facebook存儲這約100億張照片,越1PB存儲容量

     2,The Internet Archive(網際網路檔案館)存儲這約2PB資料,并以每月至少20TB的速度增長

     3,瑞士日内瓦附近的大型強子對撞機每年産生15PB資料

     我們有了大量的資料,可以從中分析出我們有用的資訊,如單個使用者浏覽網頁内容的偏好,發現潛在使用者等,還有很多用于科學技術上的用處。

     那麼資料怎麼存放呢?這麼大的資料量,首要解決的是資料讀寫速度,資料安全性,硬體故障等問題,要有高可用的方案。而hadoop就提供了這樣的解決辦法:hadoop提供了一個可靠的共享存儲和分析系統。HDFS實作存儲,而MapReduce實作分析處理。

    關系型資料庫和MapReduce:

    資料庫系統隻更新一部分記錄,比mapreduce有優勢。但是,如果更新大量資料時,效率就要比mapreduce低很多,因為需要使用“排序/合并”來重建資料庫。mapreduce比較适合以批處理方式處理需要分析整個資料集的問題;而RDBMS适用于“點查詢”和更新,資料集被索引後,資料庫系統能夠提供低延遲的資料檢索和快速的少量資料更新。mapreduce适合一次寫入,多次讀取資料的應用,而關系型資料庫更适合持續更新的資料集。

     另一個差別在于它們所操作的資料集的結構化程度。結構化資料是具有既定格式的實體化資料,如xml文檔等。半結構化資料比較松散,雖可能有格式,但也可以被忽略,是以他隻能用作對資料結構的一般指導,如一張電子表格,其結構是由單元格組成的網格,但是每個單元格自身可儲存任何形式的資料。非結構化資料沒有什麼特别的内部結構,例如純文字等。mapreduce對于非結構化或半結構化資料非常有效,因為在處理資料時才對資料進行解釋。而關系型資料都是規範的,以保證資料的完整性且不含備援。規範化給mapreduce帶來了問題,因為它使記錄讀取成為異地操作,不能進行高速的流式讀寫,而使用mapreduce的核心前提就是他可以進行高速的流式讀寫操作。

     分布式計算:

     1,mapreduc會盡量在計算節點上存儲資料,以實作資料的本地快速通路,進而獲得良好的性能,降低使用的網絡帶寬。

     2,mapreduce讓程式員無需考慮系統部分失效問題,因為自身系統實作難能夠檢測到失敗的map或reduce任務,并讓正常運作的機器重新執行這些失敗的任務,即各個任務之間彼此獨立。

     hadoop的設計目标:

     服務于那些隻需數分鐘或數小時即可完成的作業,并且運作于内部通過高速網絡連接配接的單一資料中心内,并且該資料中心内的計算機需要由可靠的,定制的硬體構成。

    常見的hadoop相關項目:

     mapreduce:分布式資料處理模型和執行環境,運作于大型商用叢集

     hdfs:分布式檔案系統,運作于大型商用叢集

     hive:一個分布式,按列存儲的資料倉庫。hive管理hdfs中存儲的資料,并提供基于sql的查詢語言用以查詢資料。

     hbase:一個分布式,按列存儲資料庫。hbase使用hdfs作為底層存儲,同時支援mapreduce的批量式計算和點查詢

     zookeeper:一個分布式,可用性高的協調服務。zookeeper提供分布式鎖之類的基本服務用于建構分布式應用

本文轉自 leejia1989 51CTO部落格,原文連結:http://blog.51cto.com/leejia/1553019,如需轉載請自行聯系原作者