前一段時間開始看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有了一些基本的瞭解。想要熟練掌握,我認為還是需要通過實戰。