1. 程式人生 > >docker中的hive以及mysql安裝

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,並且能夠正常執行,可以參考我之前的文章

hive安裝部署及初步使用,主要就是在hive-en.sh中進行路徑的配置和建立相關的目錄

要想將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&amp;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版本的,就沒有這個錯誤了