hadoop分佈式集羣hive-mysql的安裝配置

Hive的安裝

前言

已經安裝hadoop,並且可以成功運行。

MySQL的安裝

下載

安裝mysql不僅僅是安裝mysql的客戶端,還要安裝mysql的服務端
通過yum庫來下載mysql

yum install -y mysql

Exler

Exler
好的,現在mysql下載完成了!

啓動服務

下載完mysql,執行
mysql -u root -p
報錯
Exler
應該是mysql的服務沒起來。執行service mysql start報錯”mysql: unrecognized service”
來到
vi /etc/my.cnf
mysqld配置文件
Exler
有一個mysqld,原來mysqld纔是用來啓動mysql數據庫的命令

執行
service mysqld start
啓動mysql的守護線程 再來運行
mysql -u root -p
Exler啓動完成

對MySQL進行配置

創建hive用戶,數據庫等

insert into mysql.user(Host,User,Password) values("localhost","hive",password("hive"));
create database hive;
grant all on hive.* to hive@'%'  identified by 'hive';    // 使用戶可以遠程連接
grant all on hive.* to hive@'localhost'  identified by 'hive';    // 使用戶可以本地連接
mysql -u hive -p hive

嘗試登錄一下 看看用戶名密碼是否設置成功

Hive安裝

下載

官網下載apache-hive-2.3.0-bin.tar.gz

安裝

tar -zxvf apache-hive-2.3.0-bin.tar.gz

並移動到自己想要放置的地方

配置路徑

這一步可以不進行,但推薦還是配置一下環境變量 這樣就不用每次都跑到hive/bin下面去啓動hive了

vi /etc/profile

添加

export HIVE_HOME=/usr/local/hive
export PATH=$HIVE_HOME/bin:$PATH
source /etc/profile

下載mysql jdbc jar包,解壓並把mysql-connector-java-5.1.43目錄下的mysql-connector-java-5.1.6-bin.jar拷貝到hive 的lib下面

cp mysql-connector-java-5.1.6-bin.jar /usr/local/hive/lib 

配置文件

在hive文件夾下
cd conf/
運行

cp hive-default.xml.template hive-site.xml

cp hive-env.sh.template hive-env.sh

cp hive-exec-log4j.properties.template hive-exec-log4j.properties

cp hive-log4j.properties.template hive-log4j.properties

把四個template文件都先處理一下

hive-env.sh

vi hive-env.sh

在此文件中加入

export JAVA_HOME=/opt/softwares/jdk1.8.0_131
export JRE_HOME=/opt/softwares/jdk1.8.0_131/jre
export HADOOP_HOME=/usr/local/hadoop
export HIVE_CONF_DIR=/usr/local/hive/conf
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$HADOOP_HOME/bin:$PATH
export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export HIVE_AUX_JARS_PATH=$HIVE_HOME/bin
export HIVE_CONF_DIR=$HIVE_HOME/conf
export HADOOP_USER_CLASSPATH_FIRST=true

hive-site.xml

vi hive-site.xml

當進入到這個文件是崩潰的應爲參數太多了,雖然很麻煩,但也只能一點一點慢慢來了
利用 /**來查找我們要修改的參數如 :
/**javax.jdo.option.ConnectionURL

Exler
找到之後,只需要把value的值改掉就好了

<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://master:3306/hive_metadata?createDatabaseIfNotExist=true</value>
  <description>JDBC connect string for a JDBC metastore.
To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.
      For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.
   </description>
</property>

所連接的MySQL數據庫實例,localhost的話應該是僞分佈式來使用的,所以我這裏是master這樣子三個機器用master上的mysql

<property>
 <name>javax.jdo.option.ConnectionDriverName</name>
 <value>com.mysql.jdbc.Driver</value>
 <description>Driver class name for a JDBCmetastore</description>
</property>

連接的MySQL數據庫驅動

<property>
 <name>javax.jdo.option.ConnectionUserName</name>
 <value>hive</value>
 <description>username to use against metastoredatabase</description>
</property>

連接的MySQL數據庫用戶名

<property>
 <name>javax.jdo.option.ConnectionPassword</name>
 <value>hive</value>
 <description>password to use against metastoredatabase</description>
</property>

連接的MySQL數據庫密碼

<property>
    <name>hive.metastore.uris</name>
    <value>thrift://master:9083</value>
    <description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>
  </property>

元數據mysql遠程模式配置。如果hive.metastore.uris屬性爲空,則默認爲本地模式,否則爲遠程模式

沒有用到hdfs,這一塊還是有點缺失的。(有需求的博友們,可以再多查一點資料,我的也只能是僅供參考了吧,畢竟新手還做不到完美配置)

啓動Hive

來到根目錄下,先啓動hadoop start-all.sh
然後hive
啓動hive輸入show tables;
驗證是否安裝成功

遇到的問題

hive啓動後運行show tables;出現報錯
FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantidata.SessionHiveMetaStoreClient
FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantidata.SessionHiveMetaStoreClient
這個問題的原因是HivedMetaStore服務沒有啓動需要手動啓動一下

hive --service metastore &

接着上面的問題HivedMetaStore服務啓動失敗 報錯
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”

需要到hive-site.xml中找到datanucleus.schema.autoCreateAll 把value改成true。再啓動HivedMetaStore服務,接着啓動hive。show tables; 成功運行。

參考

https://cwiki.apache.org/confluence/display/Hive/GettingStarted
http://blog.csdn.net/asia_kobe/article/details/50866382
http://blog.csdn.net/an342647823/article/details/46048403

因爲這一篇拖的太久了,圖片損失掉了很多,並且遇到的一些問題也沒有記全,還是希望對大家有幫助。若發現有不對的地方請聯繫博主,謝謝。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章