Centos 安裝 hive && 踩坑排錯集錦 AWS aliyun都適應

前些日子 在自己mac 和公司 mac book 安裝 hive 也是感覺 吐血才安裝好了一半 ,默默的心疼自己兩秒鐘。由于上周 公司 數據和算法小組要求 使用hive ,所以這周第一天就開始了 hive 安裝 踩坑 實況。

首先是 直接 登錄 服務器,進入 /usr/local/ 目錄
直接 wget hive 的 壓縮包
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-2.3.0/apache-hive-2.3.0-bin.tar.gz

之后解壓 到 此目錄
tar -zxvf apache-hive-2.3.0-bin.tar.gz -C /usr/local/
重命名
`
mv apache-hive-2.3.0-bin hive

進入 hive/lib/目錄,將 [mysql-connector-java-5.1.36.jar] 放入此目錄
wget http://124.202.164.13/files/516600000AA33837/repo.maven.apache.org/maven2/mysql/mysql-connector-java/5.1.36/mysql-connector-java-5.1.36.jar
進入 hive/conf/ 目錄
cp hive-default.xml.template hive-site.xml
cp hive-env.sh.template hive-env.sh
cp hive-log4j2.properties.template hive-log4j2.properties
cp hive-exec-log4j2.properties.template hive-exec-log4j2.properties

注意 hive 只認 hive-site.xml,如果是 hive-default.xml 會報 各種錯
Hive 2.1.1 MetaException(message:Version information not found in metastore. )
`
在 hive-env.sh配置
JAVA_HOME
HADOOP_HOME

并把 hive 加入到環境變量
echo export HIVE_HOME=/usr/local/hive >>/etc/profile
echo export PATH=$PATH:$HIVE_HOME/bin >>/etc/profile

前提需要把 mysql 在服務器 上安裝好,并啟動,

之后 修改 /hive/conf/hive-site.xml 中的幾個熟悉,找到這幾個屬性 ,并把相對路徑改為 絕對路徑,并把該創建的文件夾創建了,并賦予權限。
`
<property>
<name>hive.querylog.location</name>
<value>/usr/local/hive/iotmp</value>
<description>Location of Hive run time structured log file</description>
</property>

<property>
<name>hive.exec.local.scratchdir</name>
<value>/usr/local/hive/iotmp</value>
<description>Local scratch space for Hive jobs</description>
</property>

<property>
<name>hive.downloaded.resources.dir</name>
<value>/usr/local/hive/iotmp</value>
<description>Temporary local directory for added resources in the remote file system.</description>
</property>

mkdir /usr/local/hive/iotmp/
chown -R hadoop:hadoop /usr/local/hive/iotmp/
如果不把這幾個相對路徑修改為 絕對路徑,則報
Exception in thread "main" java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
在root 用戶 手動創建 /usr/local/hive/iotmp/ 目錄并賦予hadoop用戶權限,否則會失敗。
Exception in thread "main" java.lang.RuntimeException: Couldn't create directory /usr/local/hive/iotmp
`

還有幾個屬性 需要修改值
比如 mysql 的連接信息
`

jdbc連接方式

<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>

mysql連接配置

<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://172.16.7.191:3306/hive?createDatabaseIfNotExist=true</value>

mysql數據庫的用戶名

<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>

用戶對應的密碼

<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>

`

hive 部署需要注意的幾點以及Version information not found 錯誤解決辦法
安裝HIVE 過程中要注意

1,mysql 是否正常運行

  1. 創建好mysql 用戶并分配好相應的訪問權限以及數據庫端口號等

  2. mysql-connector-java-5.1.26-bin.jar 是否放到hive/lib 目錄下 建議修改權限為777 (chmod 777 mysql-connector-java-5.1.26-bin.jar)

  3. 修改conf/hive-site.xml 中的 “hive.metastore.schema.verification” 值為 false 即可解決 “Caused by: MetaException(message:Version information not found in metastore. )”

  4. 調試 模式命令 hive -hiveconf hive.root.logger=DEBUG,console

還有三個屬性在 hive-site.xml中
`

datanucleus.schema.autoCreateAll=true
或 datanucleus.autoCreateSchema=true

datanucleus.metadata.validate=false

hive.metastore.schema.verification=false
`
<property>
<name>datanucleus.schema.autoCreateAll</name>
<value>true</value>
<description>Auto creates necessary schema on a startup if one doesn't exist. Set this to false, after creating it once.To enable auto create also set hive.metastore.schema.verification=false. Auto creation is not recommended for production use cases, run schematool command instead.</description>
</property>

為 mysql 創建新的用戶 比如 dev
進入 mysql交互模式
創建數據庫 然后創建用戶 給特定的數據庫 賦予權限

create database hive default character set latin1;
grant select,insert,update,delete,create,drop ,index alter on hive.* to dev@localhost identified by 'DmE_34dev'; # 有時候 會丟掉 index 和alter 這兩個,然后就報index 和alter 的權限不足
也可以這樣
GRANT ALL PRIVILEGES ON . TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

這個localhost 建議 寫你的hive 的內網ip ,直接使用localhost 有時候會報錯,比如用
192.168.255.155,或者直接使用 % ,不然 外網無法登錄訪問

FLUSH PRIVILEGES; #一定要刷新權限
參看 http://www.cnblogs.com/shyy/archive/2012/03/30/2453034.html
2017-11-01T19:49:05,404 ERROR [main] org.apache.hadoop.hive.metastore.HiveMetaStore - Metastore Thrift Server threw an exception...
org.apache.hadoop.hive.metastore.api.MetaException: Unable to open a test connection to the given database. JDBC url = jdbc:mysql://192.168.255.155:3306/hive?createDatabaseIfNotExist=true, username = linkdev. Terminating connection pool (set lazyInit to true if you expect to start your database after your app). Original Exception: ------
java.sql.SQLException: Access denied for user 'linkdev'@'linkhadoop-master' (using password: YES)

Caused by: org.datanucleus.store.rdbms.exceptions.MissingTableException: Required table missing : "DBS" in Catalog "" Schema "". DataNucleus requires this table to perform its persistence operations. Either your MetaData is incorrect, or you need to enable "datanucleus.schema.autoCreateTables"

WARN [main] org.apache.hadoop.hive.metastore.HiveMetaStore - Retrying creating default database after error: Error(s) were found while auto-creating/validating the datastore for classes. The errors are printed in the log, and are attached to this exception.
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: INDEX command denied to user 'linkdev'@'linkhadoop-master' for table 'DBS'
at sun.reflect.GeneratedConstructorAccessor23.newInstance(Unknown Source)

之后在 mysql 正在運行的基礎上
1.啟動Hive 的 Metastore Server服務進程
hive --service metastore &
如果沒有報錯,就接著往下走,

2 hive第一次登錄需要初始化,主要是 在 mysql 的hive庫中創建
hive 相關的 表,
schematool -dbType mysql -initSchema
該初始化 等同于在 進行一下操作
`
cd $HIVE_HOME/scripts/metastore/upgrade/mysql/
< Login into MySQL >

mysql> drop database IF EXISTS hive;
mysql> create database hive;
mysql> use hive;
mysql> source hive-schema-2.3.0.mysql.sql;
只能有一次操作,否則會報錯,
Error: Duplicate key name'PCS_STATS_IDX' (state=42000,code=1061)

Initialization script hive-schema-2.3.0.mysql.sql Error: Duplicate key
`

3.登錄hive
/usr/local/hive/bin/hive
不報錯 說明基本可以使用了,主要要用 hadoop 用戶啟動hive,用root用戶會報錯
Caused by: org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x

參考 博文
http://blog.csdn.net/seashouwang/article/details/77867134
http://www.lxweimin.com/p/978a77a1d6a2
http://www.lxweimin.com/p/921e7607fb56
http://www.lxweimin.com/p/776802db315e

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,533評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,055評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,365評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,561評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,346評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,889評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,978評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,118評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,637評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,558評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,739評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,246評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,980評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,362評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,619評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,347評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,702評論 2 370

推薦閱讀更多精彩內容