HDFS-Hadoop Distributed File System,對大檔案效率高,小檔案效率低。和普通本地的檔案系統區別在於HDFS中的檔案是分布在多台電腦上的,並且訪問檔案需要通過HDFS中的NameNode來訪問。比如一個檔案1g,被分成了10份分別儲存在電腦01-10中,當用戶端要擷取這個檔案時,會發生:
- 用戶端request到NameNode
- NameNode返回這個檔案分布情況:會返回一堆DataNode列表和檔案block對應關係
- DataNode就是儲存檔案block的各個電腦,就是資料節點
- 用戶端得知檔案資訊後,就直接和DataNode聯絡拿資料
在一個HDFS叢集中,如果NameNode down了,那HDFS也就down了
在一個HDFS叢集中,如果單個DataNode down了,HDFS照樣提供服務。
HDFS有Secondary NameNode,可以用來合并NameNode的日誌等操作
Zookeeper是這對分布式應用的分布式協作伺服器
資料庫服務
HBase,資料庫服務,由1個HMaster和多個HRegion組成,它能快速讀取、儲存大表,是個基於列儲存的系統
比如儲存一行:rowId, A, B, Cè{001, A1Content, BContent, CContent},HBase會將這一行資料拆分成3塊,分別儲存進HRegion001-003這3個電腦節點中(如果C列為null,則根本不會做儲存這個動作)
缺點
- 不能使用join等關係型資料庫的文法
- 如果要使用join等操作,需要自己寫MapReduce來合并結果,比較麻煩
- 不支援SQL查詢
Hive, 資料庫服務,能夠使用HSQL語句(類似SQL文法),能夠join、group by等,並且能自動進行MapReduce操作(更加智能)
CloudBase,資料倉儲服務,支援SQL查詢
MapReduce簡化
- Pig語言能夠通過寫指令碼實現MapReduce功能,比較方便。
- Eclipse有個MapReduce的外掛程式,可以簡化MapReduce程式的開發。