11. 安裝Hive及MySQL

Hive是基於Hadoop的一個數據倉庫工具,用來進行數據提取、轉化、加載,這是一種能夠存儲、查詢和分析存儲在Hadoop中的大規模數據的機制。hive數據倉庫工具能將結構化的數據文件映射爲一張數據庫表,並提供SQL查詢功能,能將SQL語句轉變成MapReduce任務來執行。

集羣規劃


hadoop151 hadoop152 hadoop153
hive&mysql

安裝MySQL


  1. 切換到root用戶下,卸載本機自帶的數據庫。java

    [root@hadoop151 software]$ rpm -qa | grep mariadb
    [root@hadoop151 software]$ yum -y remove mariadb-libs-5.5.60-1.el7_5.x86_64
  2. 安裝MySQLnode

    [root@hadoop151 mysql-libs]$ rpm -ivh MySQL-server-5.6.24-1.el6.x86_64.rpm
    [root@hadoop151 mysql-libs]$ cat /root/.mysql_secret   # 查看初始密碼
    [root@hadoop102 mysql-libs]$ service mysql start       # 啓動MySQL服務
  3. 登陸MySQL,設置密碼mysql

    [root@hadoop151 mysql-libs]$ mysql -uroot -p密碼
    mysql> set password=password('000000');    # 設置密碼爲六個0
  4. 配置MySQL遠程登錄sql

    mysql> use mysql;
    mysql> show tables;
    mysql> desc user;
    mysql> select User, Host, Password from user;
    mysql> update user set host='%' where host='localhost'; /* 修改user表,把Host表內容修改成% */
    mysql> delete from user where Host='hadoop151'; /* 刪除root用戶的其餘host */
    mysql> delete from user where Host='127.0.0.1';
    mysql> delete from user where Host='::1';
    mysql> flush privileges;
  5. 設置MySQL編碼爲UTF-8。
    修改my.cnf文件(這個文件可能在/etc目錄下,也可能在/usr目錄下),在[mysqld]這一欄中添加以下內容:數據庫

    init_connect='SET collation_connection = utf8_unicode_ci'
    init_connect='SET NAMES utf8'
    character-set-server=utf8
    collation-server=utf8_unicode_ci
    skip-character-set-client-handshake
  6. 重啓MySQL服務,查看編碼。apache

    [root@hadoop151 usr]$ service mysql restart
    [root@hadoop151 usr]$ mysql -uroot -p000000
    mysql > show variables like '%char%'
    +--------------------------+----------------------------+
    | Variable_name            | Value                      |
    +--------------------------+----------------------------+
    | character_set_client     | utf8                       |
    | character_set_connection | utf8                       |
    | character_set_database   | utf8                       |
    | character_set_filesystem | binary                     |
    | character_set_results    | utf8                       |
    | character_set_server     | utf8                       |
    | character_set_system     | utf8                       |
    | character_sets_dir       | /usr/share/mysql/charsets/ |
    +--------------------------+----------------------------+

安裝Hive


  1. 解壓並重命名vim

    [hadoop@hadoop151 software]$ tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /opt/module/
    [hadoop@hadoop151 module]$ mv apache-hive-1.2.1-bin/ hive
  2. 將MySQL驅動拷貝到「hive/lib」目錄下。框架

    [hadoop@hadoop151 mysql-connector-java-5.1.27]$ cp mysql-connector-java-5.1.27-bin.jar /opt/module/hive/lib/
  3. 在「hive/conf」目錄下重命名「hive-env.sh.template」並修改其中內容。工具

    [hadoop@hadoop151 conf]$ mv hive-env.sh.template hive-env.sh
    [hadoop@hadoop151 conf]$ vim hive-env.sh
    HADOOP_HOME=/opt/module/hadoop
    export HIVE_CONF_DIR=/opt/module/hive/conf
  4. 在「hive/conf」目錄下重命名「hive-log4j.properties.template」文件oop

    [hadoop@hadoop151 conf]$ mv hive-log4j.properties.template hive-log4j.properties
    [hadoop@hadoop151 conf]$ vim hive-log4j.properties
    hive.log.dir=/opt/module/hive/logs
  5. 在「hive/conf」目錄下新建hive-site.xml文件,配置Metastore到MySQL。

    [hadoop@hadoop151 conf]$ vim hive-site.xml
    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
           <property>
                   <name>javax.jdo.option.ConnectionURL</name>
                   <value>jdbc:mysql://hadoop151:3306/metastore?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>000000</value>
                   <description>password to use against metastore database</description>
           </property>
           <property>
                   <name>hive.cli.print.header</name>
                   <value>true</value>
           </property>
    
           <property>
                   <name>hive.cli.print.current.db</name>
                   <value>true</value>
           </property>
    
           <property>
                    <name>hive.metastore.schema.verification</name>
                   <value>false</value>
           </property>
    </configuration>
  6. 在「hive/bin」目錄下初始化MySQL和Hive

    [hadoop@hadoop151 bin]$ ./schematool -initSchema -dbType mysql
  7. 進入MySQL,修改「metastore」數據庫。

    mysql> use metastore;
    /* 修改表字段註解和表註解 */
    alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;
    alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
    /* 修改分區字段註解 */
    alter table PARTITION_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
    alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;
    /* 修改索引註解 */
    alter table INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;

配置Tez做爲Hive的計算引擎

Tez是Apache開源的支持DAG做業的計算框架,它直接源於MapReduce框架,核心思想是將Map和Reduce兩個操做進一步拆分,即Map被拆分紅Input、Processor、Sort、Merge和Output, Reduce被拆分紅Input、Shuffle、Sort、Merge、Processor和Output等,這樣,這些分解後的元操做能夠任意靈活組合,產生新的操做,這些操做通過一些控制程序組裝後,可造成一個大的DAG做業。
  1. 解壓並重命名。

    [hadoop@hadoop151 software]$ tar -zxvf apache-tez-0.9.1-bin.tar.gz -C /opt/module/
    [hadoop@hadoop151 module]$ mv apache-tez-0.9.1-bin/ tez-0.9.1
  2. 在「hive-env.sh」文件中添加tez環境變量配置和依賴包環境變量配置。

    export TEZ_HOME=/opt/module/tez-0.9.1
    export TEZ_JARS=""
    for jar in `ls $TEZ_HOME |grep jar`; do
        export TEZ_JARS=$TEZ_JARS:$TEZ_HOME/$jar
    done
    for jar in `ls $TEZ_HOME/lib`; do
        export TEZ_JARS=$TEZ_JARS:$TEZ_HOME/lib/$jar
    done
    export HIVE_AUX_JARS_PATH=/opt/module/hadoop/share/hadoop/common/hadoop-lzo-0.4.20.jar$TEZ_JARS
  3. 在「hive-site.xml」文件中添加以下配置,更改hive計算引擎。

    <property>
       <name>hive.execution.engine</name>
       <value>tez</value>
    </property>
  4. 在Hive的「/opt/module/hive/conf」下面建立一個tez-site.xml文件。

    [hadoop@hadoop151 conf]$ vim tez-site.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
    <property>
        <name>tez.lib.uris</name>
        <value>${fs.defaultFS}/tez/tez-0.9.1,${fs.defaultFS}/tez/tez-0.9.1/lib</value>
    </property>
    <property>
        <name>tez.lib.uris.classpath</name>
        <value>${fs.defaultFS}/tez/tez-0.9.1,${fs.defaultFS}/tez/tez-0.9.1/lib</value>
    </property>
    <property>
         <name>tez.use.cluster.hadoop-libs</name>
         <value>true</value>
    </property>
    <property>
         <name>tez.history.logging.service.class</name>
         <value>org.apache.tez.dag.history.logging.ats.ATSHistoryLoggingService</value>
    </property>
    </configuration>
  5. 將「/opt/module/tez-0.9.1」上傳到HDFS的/tez路徑。

    [hadoop@hadoop151 conf]$ hadoop fs -mkdir /tez
    [hadoop@hadoop151 conf]$ hadoop fs -put /opt/module/tez-0.9.1/ /tez
  6. 修改「hadoop/etc/hadoop」目錄下的yarn-site.xml文件,避免遇到運行Tez時檢查到用過多內存而被NodeManager殺死進程問題。 修改完yarn-site.xml文件後分發到各集羣上

    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>
  7. 啓動hive,在hive中建庫建表插入數據測試(記得要啓動hadoop集羣)。

    [hadoop@hadoop151 bin]$ ./hive
相關文章
相關標籤/搜索