HIVE配置mysql metastore

來源:互聯網
上載者:User

標籤:

HIVE配置mysql metastore
    hive中除了儲存真正的資料以外還要額外儲存用來描述庫、表、資料的資料,稱為hive的中繼資料。這些中繼資料又存放在何處呢?
    如果不修改配置hive預設使用內建的derby資料庫儲存中繼資料。
    derby是apache開發的基於java的檔案型資料庫。
    可以檢查之前執行命令的目錄,會發現其中產生了一個metastore.db的檔案,這就是derby產生的用來儲存中繼資料的資料庫檔案。

    derby資料庫僅僅用來進行測試,真正使用時會有很多限制。
    最明顯的問題是不能支援並發。
    經測試可以發現,在同一目錄下使用無法同時開啟hive,不同目錄下可以同時開啟hive但是會各自產生metastore.db檔案造成資料無法共同訪問。
    所以真正生產環境中我們是不會使用預設的derby資料庫儲存hive的中繼資料的。

    hive目前支援derby和mysql來儲存中繼資料。

    配置hive使用mysql儲存中繼資料資訊:
        刪除hdfs中的/user/hive
            hadoop fs -rmr /user/hive    
        複製hive/conf/hive-default.xml.template為hive-site.xml
            cp hive-default.xml.template hive-site.xml
        在<configuration>中進行配置
            <property>
              <name>javax.jdo.option.ConnectionURL</name>
              <value>jdbc:mysql://hadoop01: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>root</value>
              <description>password to use against metastore database</description>
            </property>

        !!手動建立hive中繼資料庫,注意此庫必須是latin1,否則會出現奇怪問題!所以推薦手動建立!並且建立庫之前不能有任意的hive操作,否則自動建立出來的庫表將使用mysql預設的字元集,仍然報錯!
        !!另一種方法是修改mysql的設定檔,讓mysql預設編碼集就是latin1,這樣hive自動建立的中繼資料庫就是latin1的了,但是這已修改將會影響整個mysql資料庫,如果mysql中有其他庫,這種方式並不好。
            create database hive character set latin1;

        將mysql的串連jar包拷貝到$HIVE_HOME/lib目錄下
        
        如果出現沒有許可權的問題,在mysql授權(在安裝mysql的機器上執行)
            mysql -uroot -p
            #(執行下面的語句  *.*:所有庫下的所有表   %:任何IP地址或主機都可以串連)
            GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘root‘ WITH GRANT OPTION;
            FLUSH PRIVILEGES;
    
        再進入hive命令列,試著建立庫表發現沒有問題。
                
        測試發現開啟多個串連沒有問題。

        串連mysql,發現多了一個hive庫。其中儲存有hive的中繼資料。DBS-資料庫的中繼資料資訊,TBLS-表資訊。COLUMNS_V2表中欄位資訊,SDS-表對應hdfs目錄

HIVE配置mysql metastore

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.