博主學習Hadoop學習到Hive,一開始跟着資料去安裝Hive 1.x一點問題也沒有,方便快捷啊,但是看了一下官方文檔,上面好像說Hive 2.0修復了很多bug,那么我想,我還是用Hive2.0好了。於是我開始按照原來的流程配置Hive2.0,遇到了各種問題,而且由於版本太新,國內網站上的解決方案基本上沒有用。查閱各種資料,現在終於配置好了。所以寫這篇博文分享,希望減少跟我一樣的新手在使用Hive2.0的時候遇到的阻力。
Hive 1.x與2.x
As of June 2015, Hive has two “main lines”, master and branch-1.
All new feature work and bug fixes in Hive are contributed to the master branch. As of June 2015, releases from master are numbered 2.x. The 2.x versions are not necessarily backwards compatible with 1.x versions.
branch-1 is used to build stable, backward compatible releases. Releases from this branch are numbered 1.x (where 1.3 will be the first release from it, as 1.2 was released from master prior to the creation of branch-1). Until at least June 2016 all critical bug fixes (crashes, wrong results, security issues) applied to master must also be applied to branch-1. The decision to port a feature from master to branch-1 is at the discretion of the contributor and committer. However no features that break backwards compatibility will be accepted on branch-1.
Requirements
Java 1.7
Note: Hive versions 1.2 onward require Java 1.7 or newer. Hive versions 0.14 to 1.1 work with Java 1.6 as well. Users are strongly advised to start moving to Java 1.8 (see HIVE-8607).
Hadoop 2.x (preferred), 1.x (not supported by Hive 2.0.0 onward).
Hive versions up to 0.13 also supported Hadoop 0.20.x, 0.23.x.
Hive is commonly used in production Linux and Windows environment. Mac is a commonly used development environment. The instructions in this document are applicable to Linux and Mac. Using it on Windows would require slightly different steps.
上面只是一些了解材料,我就從官方文檔上貼了過來,下面進入正題。
1 下載解壓
第一步當然是和老版本一樣,在官網上下載Hive的最新的穩定版壓縮包,在Linux系統下解壓。如果你只使用這一個版本的Hive,可以把HIVE_HOME和其bin目錄添加到環境變量PATH中去。安裝過Hadoop的朋友對這個應該相當熟悉。像我的話,由於想要Hive 1.x和2.x一起使用,所以我沒有配置環境變量,這樣每次要使用Hive的時候就cd到對應的bin目錄下執行就行了。
2 mysql metastore
Hive的元數據是需要一個關系型數據庫保存的,它內置了一個deby,但是最好用的無疑還是MySQL,而且安裝配置也簡單。所以博主建議使用mysql。這一步的詳細過程請參考博主的另一篇博文:http://blog.csdn.net/cds86333774/article/details/51132532。
然后Hive要連接mysql啊,這個時候熟悉mysql的朋友就一定會意識到:哦!驅動!
對的,安裝好mysql並配置好了之后,還要將連接mysql的驅動:mysql-connector-java-5.1.28.jar 拷貝到HiveHome 目錄下的lib文件夾中,這樣Hive才可能成功連接mysql。
3 配置hive-site.xml
在hive的目錄下有一個conf文件夾,里面全是配置文件。
cp hive-default.xml.template hive-site.xml
- 1
- 1
將模板復制並命名為 hive-site.xml,我們要做的配置就是在這個文件中修改一些參數。這一點也和Hadoop類似。
在這個文件中,查找到如下屬性,然后修改其中的value到與你的主機相符的配置,例如mysql所在的主機? 端口一般都是3306;hive是用來存元數據的數據庫名稱;username和password要與你在上一步設置mysql時的一致:
<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://hadoop00:3306/hive?createDatabaseIfNotExist=true</value> <description>JDBC connect string for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> <description>Driver class name for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> <description>username to use against metastore database</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>123</value> <description>password to use against metastore database</description> </property>
注意事項:
如果你在使用mysql之前啟動過Hive,注意使用下面的命令將元數據同步到mysql,不然會報錯:
schematool -dbType mysql -initSchema
4 錯誤1
錯誤1:忘記啟動Hadoop集群了。
5 錯誤2
這個問題卡得我有點久,因為在百度上沒有找到解決方案。后來在stackoverflow上找到了完美解答:
解決后反思一下,我發現自己有一個問題,就是很不喜歡認真看錯誤信息,其實只要認真看了錯誤信息,然后到hive-site.xml文件去找出特定字段,然后看description,是可以自己找出解決方案的。國內的網站上還沒有出現這個問題的解答,是因為版本太新。而每當一個全新的問題出現,總有一些大牛可以為我們這些小白解決問題,而這種解決全新問題的能力也是我所欠缺的。簡單總結為一句話,對我自己說的:【請認真分析錯誤信息,不要嫌麻煩,不要一遇到問題就百度,不要一看到別人貼出的解決方案,看都不看清楚就直接復制粘貼】。
6 成功
安裝HIVE 過程中要注意
1,MySQL 是否正常運行
2. 創建好mysql 用戶並分配好相應的訪問權限以及數據庫端口號等
3. mysql-connector-java-5.1.26-bin.jar 是否放到hive/lib 目錄下 建議修改權限為777 (chmod 777 mysql-connector-java-5.1.26-bin.jar)
4. 修改conf/hive-site.xml 中的 “hive.metastore.schema.verification” 值為 false 即可解決 “Caused by: MetaException(message:Version information not found in metastore. )”
5. 調試 模式命令 hive -hiveconf hive.root.logger=DEBUG,console