前兩天到現(xiàn)場的測試環(huán)境部署HBase生命周期(實(shí)際上也是部署了2.4版本進(jìn)行測試)問題還是有點(diǎn)多的,簡單記錄一些現(xiàn)在還記得的問題與解決辦法。
1.開始遇到了Kerberos...只想說這是個坑,拿到了keytab,krb5.conf還是沒用,最后卡在principal在regExp [/@] 切分時報(bào)錯,_HOST有問題,查不到具體解決辦法,只好看了下Hadoop - SecurityUtil的源碼,報(bào)錯的地方見getServerPrincipal(String principalConfig, InetAddress addr)方法,找不到本機(jī)HostName,但是自己寫了個InetAddress.getLocalHost().getCanonicalHostName()
(就是SecurityUtil.getLocalHostName()方法)測了一把,發(fā)現(xiàn)能正確取到HostName...整個人懵逼,研究了許久,實(shí)在沒法處理,于是放棄Kerberos
附上hadoop-SecurityUtil源碼:SecurityUtil.java
2.放棄Kerberos后走回正道,想著先寫個簡單的java API去list一下有哪些表,測試項(xiàng)目就直接取了集群隨便一個datanode上的${HBASE_HOME}/lib下所有jar與hadoop-core.jar,hadoop-hdfs.jar,取了${HBASE_HOME}/conf/hbase-site.xml,打包后放到服務(wù)器,跑!悲催,hbase-site.xml下的hbase.rootdir是hdfs路徑(hdfs://xxxx/hbase/lib),報(bào)Unknown Host,想想覺得奇怪,一般Unknown Host都是因?yàn)闆]有正常配置/etc/hosts,解析hostname時不知道對應(yīng)ip才報(bào)這個錯,并且在報(bào)錯的時候也用hadoop fs -ls hdfs://xxxx能正常讀取hdfs,baidu/google都查了很久,貌似沒人遇到過這種問題...問了同事后,讓我把集群core-site.xml,hdfs-site.xml一起丟到classpath,還是沒用!不知道哪里靈光一現(xiàn),感覺這肯定是hdfs這塊出了問題,于是乎把服務(wù)器hadoop/share/hadoop*jar全加到項(xiàng)目lib...(不一定全部需要,但全加了肯定有用...)再測一把,嗯嗯,破費(fèi)好吧....效果全等于hbase shell list
3.測試沒問題后,就把自己的代碼往服務(wù)器丟了...部署過程也是坎坷。logback感覺抽了,tomcat的catalina.out沒日志....沒日志....沒日志....這要我怎么測。看了一萬遍Server.xml頭疼(因?yàn)槎丝谝灿悬c(diǎn)問題,服務(wù)器很多tomcat,甚至想直接su了殺了那個占我8080/8005/...端口的家伙...,但所有服務(wù)器root都改了強(qiáng)密碼...keygen這種玩意生成的密碼,就算了吧...)。沒有用自己的tomcat,沒有用服務(wù)器現(xiàn)成的tomcat,因?yàn)椴恢绖e人的server.xml到底改了什么(順帶吐槽RHEL沒有配置過的vim真難用...難道是被別人alias vim=vi了...)從apache搞了最新的tomcat8,war包丟進(jìn)去,簡單改了下content.xml,./start.sh && tailf ../logs/catalina.out ...還是沒有日志,我x了x了。。。用curl測了下靜態(tài)登錄頁面,也是正常的。萬能的同事又來了...把logback.xml從WEB-INF/classes/丟到了WEB-INF/,但還是沒用...
換回了自己的tomcat,啟動,報(bào)錯....日志比較友好docBase="C:\Users\L\work\apache-tomcat-8.0.38\wtpwebapps\dacp-me-deploy"不存在,那必須啊...改成了服務(wù)器上的絕對路徑,還是報(bào)錯....直接注釋掉整個<Context docBase="xxx"/>啟動tomcat...瞬間啟動完畢,容器里都沒有app的那種瞬間完成,原來是webapps里面沒東西...把wtpwebapps下的項(xiàng)目復(fù)制過來,一切over......啟動日志有了,log也有了...
部署測試后記
????自己代碼也有一些邏輯問題,一直是閉門造車,但卻做不到出門合轍。果然是騾子是馬,拉出來溜溜就知道了...不過說實(shí)話,自己本機(jī)之前搭的偽分布式都沒完全搞定,直接上完全分布式的確有點(diǎn)不明智,不過再不搞就算拖工期了啊...(捂臉...)
????所以想要能直接在正式hadoop環(huán)境上搞點(diǎn)什么,自己也要有完全分布式的環(huán)境,不說做到有一個完全鏡像與生產(chǎn)的測試環(huán)境,至少核心部分要一樣啊....
第一點(diǎn)Kerberos里面的確是沒時間研究了,時間不允許,有空要看看源碼,到底怎么報(bào)錯的...
第二點(diǎn)對于tomcat的理解也不夠深刻,平時處于只是能用的階段,到了真的出問題的時候,哎。。書到用時方恨少...準(zhǔn)備再寫一篇關(guān)于Tomcat的博文,時間再定吧...