我的Hadoop、Hbase、Hive、Impala總結
1.怎麼查詢hadoop_home
看Hive安裝的時候需要配置hadoop_home 因為不太懂,查找了一下/etc/profile檔案發現沒有,
又搜尋了一下發現叫hadoop的目錄到處都是,不知道哪個是,最後同事說,有bin的目錄就是hadoop_home,那麼多資料夾一個一個找費勁,而且如果有多個資料夾怎麼辦,
這裡我發現一個簡單的辦法
輸入hadoop version
會打印出
Hadoop 2.5.0-cdh5.3.2
Subversion http://github.com/cloudera/hadoop -r 399edecc52da6b8eef1e88d8a563ede94c9cc87c
Compiled by jenkins on 2015-02-24T20:54Z
Compiled with protoc 2.5.0
From source with checksum 3d11317b8cfa5e9016a8349e33b363ee
This command was run using /usr/lib/hadoop/
這個命令是檢視hadoop的版本,這裡下邊紅色的資料夾就是安裝Hadoop的位置了,點進去以後發現有bin目錄,搞定,那麼上邊又多了一個發現。
因為我只知道我們用的是cloudera的CDH來安裝的hadoop,但是我不知道我們用的什麼版本,這裡也一起打印出來了,用的是cdh5.3.2
2.Hive部署
按照下邊的帖子進行的配置
http://ju.outofmemory.cn/entry/118202
釋出了Hive,版本是CDH5.3.2的
下載地址是 http://archive-primary.cloudera.com/cdh5/cdh/5/
正常搭建完以後,他說在控制檯直接敲hive ,我不知道怎麼弄的,我是在hive的目錄下的bin目錄下,返現有個hive檔案,我就直接敲hive
然後才正常啟動hive ,但是一開始啟動說是找不到驅動,當然是英文提醒,然後我把lib放到了網上說的user/lib/hive/lib下,發現不好使,我又看了
/etc/profile檔案發現class_path變數指向JDBC的lib,我又放JDBC下,還是不好使,最後我發現hive目錄下有個lib放進去終於好使了
3.Hive啟動後試驗
create TABLE aaa(id int,name string)報錯如下
Error in metadata:MetaException(message:javax.jdo.JDODataStoreException: An exceptionwas thrown while adding/validating class(es) : Specified key wastoo long; max key length is 767 bytes
解決方式
在mysql伺服器上執行
alter database hive character set latin1
問題解決了
4.Hive匯入資料都是NULL
按網上寫的建立表以後,匯入類似格式資料,資料都是NULL。問題是因為建表時的分隔符跟資料的實際分隔符不對,我換成 ',' 都好分隔以後資料成功錄入。
5.安裝ClouderaManager總結
主要參考2個帖子
http://blog.csdn.net/yhl27/article/details/37726639
www.aboutyun.com/thread-9190-1-1.html
先參考第一個配置環境,再參考第2個安裝。
問題1.沒有圖形使用者介面如何安裝
公司的Linux伺服器沒安裝圖形使用者介面。同時,我只能使用CRT進行遠端伺服器安裝
這個時候,使用cloudera-manager-installer.bin安裝就會列印一大堆亂碼的東西,因為他是圖形使用者介面的。
一開始我以為安裝不了了,但是實際上是能安裝的。
我進入了第一個帖子裡的
/var/www/html/cm5/redhat/6/x86_64/cm/5.4.1/RPMS/x86_64 目錄下
然後自己rpm -ivh 來安裝
先安裝daemons,然後安裝server,然後安裝server-db,然後安裝agent。其中daemons必須第一個安裝,server必須在server-db前邊安裝。agent隨便,只要先安裝了daemons就可以了。
問題2.安裝完以後cloudera-scm-server啟動失敗
安裝完這些包以後發現cloudera-scm-agent,server,server-db3個服務都已經有了
但是server一直啟動不起來。
這個時候,可以進入
/var/log/cloudera-scm-server資料夾檢視.log檔案,就一個.log應該不會找錯,這個時候我出現了2個問題。
第一個是沒有mysql驅動包,這個時候不用從晚上下載,只要在你前臺工程裡搜一下一般都有。mysql-connector-java-5.1.*.jar
這裡我電腦上有個mysql-connector-java-5.1.30.jar我就直接放到伺服器上了
但是發現我放到classpath下不行,放到JDK的lib下也不行,最後找到了正確的位置
應該放在/usr/share/java/目錄下,同時檔名必須叫mysql-connector-java.jar否則也會出問題!
驅動安裝以後出現第2個問題,log的報錯已經改變,說是連不上資料庫
因為我著臺上沒有mysql,mysql在另外一臺伺服器上。這個時候需要修改
/etc/cloudera-scm-server/db.properties檔案
裡邊很簡單,自己把註釋的資料庫賬號,密碼,地址什麼的填上就行了,資料庫名我忘了是不是需要自己建了,最好先自己建一個。
表是在伺服器啟動的時候,它自己會幫你建上,但是首先你要有個名字跟配置檔案裡一樣的資料庫!
6.cloudera-manager叢集
我已經在10.10.92.151上安裝了cloudera-manager,之後安裝了Hbase,HDFS,MapReduce,Hive,Impala,zookeeper
我現在想在10.10.92.153上也安裝一份,同時作為151的子節點,形成叢集。
我一開始的做法是按照網上說的,點選新增節點,然後一步步來,但是一直提示
http://10.10.92.151/cm5/redhat/6/x86_64/cm/5.4.1/repodata/repomd.xml 這個地址返回407
後來我配置了代理,myrepo,/var/hosts,/etc/yum.conf/,這些,能配置代理的都配置了代理。
終於不報407了,開始報
http://10.10.92.153/cm5/redhat/6/x86_64/cm/5/repodata/repomd.xml: [Errno -1] Error importing repomd.xml for myrepo: Damaged repomd.xml file
提示是配置檔案損壞,這個問題一直沒解決,在網上問也沒人知道。
最後沒辦法
我直接在153上安裝了全套的cloudera-manager5.4.1+CDH5.4.1
之後,我解除安裝了153上的cloudera-scm-server-db 跟 cloudera-scm-server
然後將/etc/cloudera-scm-agent/config.ini 配置下的伺服器地址,從local修改成了10.10.92.151
重啟cloudera-scm-agent之後。
進入151的管理頁
http://10.10.92.151:7180
但是在 主機這裡 一直重新整理不出來153這臺機器。
最後我又點選了在向叢集裡新增主機,但是這次的嚮導居然變了,變的跟安裝CDH時候差不多,經過幾次繼續之後,151開始向153上佈置配置檔案,
最後居然叢集好使了,可以看到2臺機器。
但是實際上是否叢集成功了,我現在也不會看,所以還不知道。
7.Hbase的VERSIONS總結
首先可以通過describe '表名' 來查看錶資訊,其中就有VERSIONS屬性。這個是版本。預設是3,我一直在傻傻的在HBASE裡找這個設定。最後發現沒有。
而是在建表的時候可以設定的,比如
create 'table1',{NAME=>'clo1',VERSION='50'};//這是保留50個版本
但是,我發現從hive對映過來的表,他的VERSIONS預設是1,正好也滿足我的需求,這裡只是記錄一下。其實這個問題是我一直以為是在HBASE的配置項裡配置表的VERSIONS數量,是我搞錯了。
8.Impala不能查詢Hive新增加的表
下邊是我從網上找到的解決方案,這裡記錄一下。
使用Cloudera Manager部署安裝的CDH和Impala,Hive中新增加的表,impala中查詢不到,其原因是/etc/impala/conf下面沒有hadoop和hive相關的配置檔案:將hadooop-core.xml,hdfs-site.xml,hive-site.xml拷貝到conf下,重啟服務即可。
/etc/impala/conf這個路徑我是有的。於是但是下邊這3個檔案在哪呢,我拷貝的是/etc/hive/conf目錄下的
core-site.xml,hdfs-site.xml,hive-site.xml拷貝完檔案後重啟Impala服務,執行impala-shell,show tables,能夠發現新表,問題解決。
。。。。。。未完待續。。。。。。