docker中的hive以及mysql安裝
我的hadoop叢集是部署在docker上的,所以hive和mysql的安裝也要在docker上,在ubuntu系統中使用命令apt-get install mysql-server就可以直接安裝mysql,但是在docker容器中使用這個命令會報沒有許可權的錯誤,在root下也會報這個錯,所以一直沒有安裝成功,後來使用docker官方映象安裝才成功
1.mysql的安裝:
首先拉去映象
docker pull mysql:5.7
建立用於掛載的目錄
mkdir -p /my/mysql/datadir *用於掛載mysql資料檔案
mkdir -p /my/mysql/conf.d *用於掛載mysql的配置檔案
建立容器
docker run --name=mysql -p 3306 -v /my/mysql/datadir:/my/mysql/datadir -v /my/mysql/conf.d:/my/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root -i -t mysql:5.7
命令解析:
-p : 開放容器埠
-v : 掛載宿主目錄到容器目錄
-e : 指定root密碼
連線mysql:
mysql -h+容器ip -uroot -p
輸入root密碼
2.將mysql作為hive的元資料的儲存的資料庫
這裡前提是你已經安裝了hive,並且能夠正常執行,可以參考我之前的文章
要想將mysql作為元資料庫,這裡只需要再配置一個檔案就可以了,首先進入到hive的conf目錄下
vi hive-site.xml
在裡面輸入下邊的內容
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://172.17.0.5:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value> *這裡改為你自己的容器ip
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
</property>
</configuration>
將mysql的驅動jar包放到hive的lib目錄下
然後再執行hive,就可以在mysql資料庫中生成一張hive表,用來儲存元資料,如果不使用mysql來儲存元資料,就會儲存在自帶的derby資料庫中,這時候如果開啟多個hive客戶端,就會產生ava.sql.SQLException異常
這裡需要注意的是hive的版本最好不要太高,我第一次用的是1.2.2的版本,第一次啟動hive正常,再啟動時就會報錯,除非把mysql中新生成的資料庫刪除,後來換成0.14.0版本的,就沒有這個錯誤了