Cloudera可以簡化Hadoop的安裝配置過程,自動在集羣節點上安裝hadoop相關組件,創建用戶。
所有機器上一定要安裝好Perl包。
cloudera manager free是個免費的版本,對普通的應用也夠了。 安裝比較簡單,下載相應的.bin文件運行即可。 不過DNS要配好,如果不用DNS服務器解析每個集羣主機,那麼每個集羣機器上面hosts文件都要準備好。
安裝好後用web 界面建立集羣,各臺機器上即遠程安裝CDH
安裝過程默認都是到網上下載rpm包,容易超時。比較煩人。
可以自鍵repo, 本來覺得太複雜,後來試了。 其實方法也不難, 把CDH, cloudera-manager-相關的RPM都存放在某一機器上,運行createrepo(要安裝此yum包先), 然後用httpd吧這個目錄發佈出去就可以。
但是每個host上都要創建myrepo.repo文件,指向此httpd的repo URL, 還要記住repo文件里加一句 cost=300,這樣纔可以優先從這裏下載rpm包。
如果是用parcel安裝,你們第一步安裝好之後,只是在各機器上安裝了cloudera-agent, 下一步纔是安裝CDH各組件。
在安裝CDH3的 默認情況下,配置是這樣的
Hbase, habse.rootfir 存放在/hbase
datanode, dfs.data.dir 存放在/dfs/dn
Namenode, dfs.name.dir 存放在 /dfs/nn
Jobtracker 本地數據目錄 mapred.local.dir 存放在 /mapred/jt
Tasktracker 本地數據目錄mapred.local.dir 存放在 /mapred/local
Secondary NAme node, fs.checkpoint.dir 存放在 /dfs/snn
Hive, 倉庫目錄 hive.metastore.warehouse.dir 存放在 /user/hive/warehouse;端口 hive.metastore.port 9083
Oozie服務器 數據目錄 /var/lib/oozie/data
zookeeper dataDir datalogDir 都存放在 /var/zookeeper
選擇默認。
/dfs 和/mapred 都是本地磁盤上的目錄,實際環境中也許應該事先建好目錄,mount在單獨的一塊磁盤上。
安裝好以後是這樣的界面
服務相關的用戶都會自動創建好。
啓動後默認的端口:
master上面
50060 task tracker status
50030 mapreduce 管理界面
50070 NameNode管理界面
8020 DFS系統
安裝好了以後會發現和自己下載apache 的 tar包不一樣, 可執行文件和配置文件被分別放到了不同目錄。 這個給人感覺不是很好, 維護起來不太便捷。 conf目錄下的master和slaves文件也沒有了,很奇怪! 不過可能因爲這兩個文件只是start-???和stop-???的腳本里面用到,CDH是由數據庫裏的信息管理集羣,啓動停止都有CDHweb界面操作,所以就不用了。這些配置什麼的信息cloudera網站上沒有詳細提到,有的提到了但是不是對應最新版的,按照他的文檔你找不到配置文件的路徑,比較麻煩。
如果是按照的CDH4, 那麼很多配置文件比如hive的文件都放在了/var/run/目錄下了,也就是動態生成的? 那麼原始配置參數大概都在 cloudera manager的本地數據庫裏。 真不知道它是怎麼改寫的。
CDH3的hadoop版本是 0.20, 是比較老的一個版本了。 配置則和睦的基本都放在/etc下面
sqoop 的rpm默認已安裝在master上面, 運行命令
sqoop import --connect jdbc:mysql://serveraddress/DBname --username somename -P --table tablename --hive-import --hive-table hivename --split-by keyname
如果是添加記錄到某個表要加上 --append選項,但不知道這個是不是必須的。
即可導入數據到hive中,並且會自動建立hive表。 不過運行時的用戶要用hdfs, 還有一個hive用戶但是它是不能登錄的,搞不明白cloudera的設計。
impala,據說性能比hive高很多,但是還沒有做比較。 它可以用JDBC連接,要運行你的java程序,官方文檔上說CLASSPATH 裏面可以設/opt/jar/*.jar, 結果試下來不行,你必須一個一個指定/opt/jar/下面 impala/hive 的各個jar纔可以 運行你的java程序。
Hadoop本身帶有一個IO性能測試的工具, TestDFSIO,運行是這樣的:
hadoop jar hadoop-test.jar TestDFSIO -write -nrFiles 5 -fileSize 1000
hadoop jar hadoop-test.jar TestDFSIO -read -nrFiles 5 -fileSize 1000
hadoop jar hadoop-test.jar TestDFSIO -clean
這個工具在cloudera下運行會出錯, 其實map和reduce分別都完成了,但就是在最後一步會報錯:
java.io.FileNotFoundException: TestDFSIO_results.log (Permission denied)
原因是運行程序一般使用hdfs身份運行,但是這時寫result文件沒有權限。
必須加一個參數:
hadoop jar hadoop-test.jar TestDFSIO -write -nrFiles 1 -fileSize 512
-resFile /tmp/TestDFSIOresults.txt
這樣就可以看到測試的結果。