前一段時間開始看Hadoop的資料,希望通過自學能了解相關的基本知識技能。不過發現有些困難。首先是hadoop是安裝在liuux上的,其次hadoop的開發語言是java。我對linux和java都不熟悉。自學有困難。不過這還不是最困難的。最困難的是hadoop相關的公開的學習資料太少。官網上的教程經常有小錯誤走不下去。
后來看到Cloudera公司授權的國內的一個hadoop培訓(http://www.ruanko.com/portal/hadoop/Cloudera_Hive_and_Pig_Training.html),報名參加了一門最感興趣的數據查詢和處理的課。還有兩門課分別是hadoop的管理和hadoop的開發。
Hadoop是開源軟件。Cloudera公司提供開源的、比較穩定的編譯后的版本,這個版本簡稱CDH。另外還有兩家公司提供不開源的穩定的版本。Cloudera公司以提供Hadoop的培訓和支持為主要業務。我參加的這個培訓是Cloudera公司授權的首次國內培訓。
Hive和Pig是hadoop之上的兩個數據查詢和處理的工具。Hive的語法與SQL很像。Pig是一種處理數據的腳本語言。如果不用Hive和Pig之類的工具,而是用Hodoop上的原生態的Java的來查數據的話,開發效率比較低。一個簡單的sql需要寫一頁代碼。
Hadoop的數據實際是存在文件系統中的。沒有像關系數據庫那樣的各種對數據的校驗約束機制。因此保存數據的時候,使用Pig之類的腳本來做預處理就比較有必要了。
Hive運行在可以連接到hadoop的客戶端上。Hive創建的表並不會保存到Hadoop之上。只會保存到運行Hive的Client上。這是與關系型數據庫非常不同的一個特點。從這個特點看Hadoop更像是文件系統而不是數據庫。
如果需要處理二進制數據,那么Hadoop和Pig都不適合。
除此之外,常見的數據查詢功能,Hive和Pig都可以實現。不過Hive和Pig都不支持對數據的修改。Hive還有一些特有的統計功能,比SQL實現起來簡潔。
Hadoop不是關系型數據庫,目前還沒支持索引。查詢起來速度當然比不上關系型數據庫。在練習用的單獨的虛擬機上,最大的表數據量只有10萬,許多普通的查詢也要1-2分鍾。
這個培訓課,基本上算是一個入門。我感覺僅僅是對Hadoop,Hive,Pig有了一些基本的了解。想要熟練掌握,我認為還是需要通過實戰。