環境:mac OS X Yosemite + hadoop 2.6.0 + hive 1.2.0 + jdk 1.7.0_79
前提:hadoop必須先安裝,且處于運作狀态(僞分式模式或全分布模式均可)
建議:經個人實踐,在mac OS X Yosemite 環境下,如果使用apache下載下傳的原始hadoop 2.6.0,不管jdk安裝成什麼版本(1.6\1.7\1.8都試過),hive 1.2.0啟動時,始終報jdk版本不比對,後來在mac上将hadoop 2.6.0源編譯成mac原生版本後,就正常了。
一、環境變量
三、修改hive中的xml配置
cp hive-default.xml.template hive-default.xml
cp hive-default.xml.template hive-site.xml
cp hive-exec-log4j.properties.template hive-exec-log4j.properties
cp hive-log4j.properties.template hive-log4j.properties
cp beeline-log4j.properties.template beeline-log4j.properties
即:把幾個帶.template字尾的模闆檔案,複制一份變成不帶.template的配置檔案,注意hive-default.xml.template這個要複制二份,一個是hive-default.xml,另一個是hive-site.xml,其中hive-site.xml為使用者自定義配置,hive-default.xml為全局配置,hive啟動時,-site.xml自定義配置會覆寫-default.xml全局配置的相同配置項。
注:hive中有一個中繼資料的概念,中繼資料記錄了目前有哪些表,哪些字段,字段資料類型等,由于hdfs是沒有這些額外資訊的,是以hive需要借助傳統資料庫來記錄這些中繼資料資訊,預設情況下,采用内置資料庫derby來記錄,也可以通過配置将這些中繼資料記錄到mssql\mysql\oracle\postgreSQL等大型RDMBS中,上面的配置中,示範了MYSQL、PostgreSQL二種配置,如果把23-41注釋掉,就變成derby獨立模式。
另:上面的配置檔案中,有一些關于目錄的參數,先提前把目錄建好,
hive.exec.local.scratchdir
hive.downloaded.resources.dir
這二項對應的目錄,是指本地目錄(必須先手動建好),其它目錄為hdfs中的目錄(hive啟動時,先自動建好,如果自動建立失敗,也可以手動通過shell在hdfs中建立)
四、替換hadoop 2.6.0中的jline jar包
由于hive 1.2.0自帶的jline包跟hadoop 2.6.0自帶的版本不一緻,是以需要将$HIVE_HOME/lib/jline-2.12.jar 這個檔案替換掉$HADOOP_HOME/share/hadoop/yarn/lib 下原來的版本 (即:将舊版本删除,複制新版本到此目錄),否則hive啟動将失敗
五、測試及驗證
$HIVE_HOME/bin/hive
如果能正常進入 hive> 即表示正常
a) 建立表測試
hive>create table test(id int);
b) 将hdfs中的檔案内容加載到表中
hive> load data inpath '/input/duplicate.txt' into table test;
c) 測試求平均值
hive> select avg(id) from test;
Query ID = jimmy_20150607191924_ccfb231f-6c92-47ac-88f1-eb32882a0010
Total jobs = 1
Launching Job 1 out of 1
Number of reduce tasks determined at compile time: 1
In order to change the average load for a reducer (in bytes):
set hive.exec.reducers.bytes.per.reducer=<number>
In order to limit the maximum number of reducers:
set hive.exec.reducers.max=<number>
In order to set a constant number of reducers:
set mapreduce.job.reduces=<number>
Job running in-process (local Hadoop)
2015-06-07 19:19:27,980 Stage-1 map = 100%, reduce = 100%
Ended Job = job_local1537497991_0001
MapReduce Jobs Launched:
Stage-Stage-1: HDFS Read: 190 HDFS Write: 0 SUCCESS
Total MapReduce CPU Time Spent: 0 msec
OK
3.909090909090909
Time taken: 3.322 seconds, Fetched: 1 row(s)