什麼是hadoop?
hadoop 是一個可編程和運行分佈式應用,用來處理大數據的開源框架。
Hadoop主要子項目
Hadoop Common: 在0.20及以前的版本中,包含HDFS、MapReduce和其他項目公共內容,從0.21開始HDFS和MapReduce被分離爲獨立的子項目,其餘內容爲Hadoop Common
HDFS: Hadoop 分佈式文件系統 (Distributed File System) - HDFS (Hadoop Distributed File System)
MapReduce:並行計算框架,0.20前使用 org.apache.hadoop.mapred 舊接口,0.20版本開始引入org.apache.hadoop.mapreduce的新API
HBase: 類似Google BigTable的分佈式NoSQL列數據庫。(HBase 和 Avro 已經於2010年5月成爲頂級 Apache 項目)
Hive:數據倉庫工具,由Facebook貢獻。
Zookeeper:分佈式鎖設施,提供類似Google Chubby的功能,由Facebook貢獻。
Avro:新的數據序列化格式與傳輸工具,將逐步取代Hadoop原有的IPC機制。
和其他分佈式架構比較:
SETI@home(就是尋找外星人那個):是將數據傳送到要計算的地方(運行屏保的計算機),經過計算,再將計算結果傳回到數據中心。
hadoop的做法:將代碼向數據所在的地方遷移。
和普通的數據庫比較:
1.處理的對象不一樣。
傳統數據庫處理的是 結構化的數據,如 表的結構都是固定的。結構化查詢語言(Structured Query Language)簡稱SQL.
hadoop更多的是處理半結構化的數據或者非結構化的數據,如分析日誌記錄,統計字符出現的次數等等。
2.拓展方式不一樣
hadoop的拓展是向外拓展,即需要擴容的時候,增加普通的機器。
普通數據庫拓展是向高拓展,即更換更好的機器。(當然也可以向外拓展,這點有待討論...)
3.hadoop用鍵值對代替數據表
傳統數據庫是讓數據以某種模式存放在具有關係數據庫的模式中。基於這種模式來對數據進行處理。hadoop將數據轉化爲鍵/值對來進行處理
4.hadoop用函數式編程(MapReduce)代替sql
5.hadoop用離線批量處理代替在線處理(hadoop爲離線處理和大規模數據分析而設計,
更適合於 一次寫入,多次讀取 的情況,類似於sql的數據倉庫)
==============================================================
我也是剛開始學習hadoop,學習的資料來自於 《hadoop實戰》和《hadoop權威指南》 以及網上搜到的一些資料。
這些筆記是學習的過程中自己積累的,然後用更加淺顯的話表述出來,希望也能幫助到初學者。當然裏邊會有很多錯誤,也希望大家指出,我會認真改正,謝謝