天天看點

泰漲知識 | Hive叢集環境部署

作者:泰克教育官方賬号

Hive是什麼

Hive是由Facebook開源,基于Hadoop的一個資料倉庫工具,可以将結構化的資料檔案映射為一張表,并提供類SQL查詢功能。

本質:Hive是一個Hadoop用戶端,用于将HQL(Hive SQL)轉化成MapReduce程式。

Hive架構原理

Hive的資料的寫入寫出都在HDFS,執行過程就是MR程式的執行,通過yarn排程器排程,提供CLI和JDBC/ODBC用戶端。

泰漲知識 | Hive叢集環境部署

Hive的優缺點

1)優點

(1)操作接口采用類SQL文法,提供快速開發的能力(簡單、容易上手)。

(2)避免了去寫MapReduce,減少開發人員的學習成本。

2)缺點

(1)Hive的執行延遲比較高,是以Hive常用于資料分析,對實時性要求不高的場合。

(2)Hive分析的資料是存儲在HDFS上,HDFS不支援随機寫,隻支援追加寫,是以在Hive中不能高效update和delete。

資料庫和資料倉庫的差別

資料庫Database(Oracle, Mysql, PostgreSQL)主要用于事務處理。

資料倉庫Datawarehouse(Amazon Redshift, Hive)主要用于資料分析。

用途上的不同決定了這兩種架構的特點不同。

資料庫(Database)的特點是:

相對複雜的表格結構,存儲結構相對緊緻,少備援資料。

讀和寫都有優化。

相對簡單的read/write query,單次作用于相對的少量資料。

資料倉庫(Datawarehouse)的特點是:

相對簡單的(Denormalized)表格結構,存儲結構相對松散,多備援資料。

一般隻是讀優化。

相對複雜的read query,單次作用于相對大量的資料(曆史資料)。

Linux中安裝MySQL

1)檢視系統之前是否已安裝MySQL

rpm -qa | grep mysql

有的話,解除安裝:

rpm -e mysql-libs-5.1.66-2.el6_3.i686 --nodeps

2)安裝Mysql:yum install mysql mysql-server mysql-devel

3)安裝完成後修改/etc/my.cnf檔案,添加内容如下:

[mysql]

default-character-set=utf8

[mysqld]

default-character-set=utf8

lower_case_table_names=1

4)啟動服務驗證是否已啟動

service mysqld start

5)停掉服務

service mysql stop

設定MySql使用者:mysqladmin -u root password 123

6)登入

mysql -uroot –p

7)進行重置密碼(可做可不做)

set password=password('123456');

檢視使用者:select user,host from user;(可不用檢視)

--設定root賬戶的host位址(修改了才可以遠端連接配接)

mysql>grant all privileges on *.* to 'root'@'%' identified by 'root'

with grant option ;

8)重新整理

flush privileges

安裝Hive

第一步:確定Mysql已經安裝成功(Mysql安裝詳見第4點)

第二步:複制Mysql驅動jar包到hive的lib路徑下

第三步:修改hive-env.sh檔案,添加如下内容:

export HIVE_CONF_DIR=/usr/local/hive/hive-0.13.1-cdh5.3.6/conf
        export JAVA_HOME=/usr/local/java/jdk1.8.0_161
        export HIVE_HOME=/usr/local/hive/hive-0.13.1-cdh5.3.6
        export HADOOP_HOME=/usr/local/hadoop/hadoop-2.5.1           

第四步:修改hive-site.xml檔案

<property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://192.168.100.110:3306/hive?createDatabaseIfNotExist=true</value>
    </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>123</value>
   </property>

   <property>
        <name>hive.querylog.location</name>
        <value>/usr/local/hive/hive-0.13.1-cdh5.3.6/hive_tmp</value>
   </property>

   <property>
        <name>hive.downloaded.resources.dir</name>
        <value>/usr/local/hive/hive-0.13.1-cdh5.3.6/hive_tmp</value>
   </property>

   <property>
        <name>hive.exec.local.scratchdir</name>
        <value>/usr/local/hive/hive-0.13.1-cdh5.3.6/hive_tmp</value>
   </property>

   <property>
        <name>datanucleus.schema.autoCreateAll</name>
        <value>true</value>
   </property>           

第五步:分發hive檔案至各個節點

例:scp -r /usr/local/hive/hive-0.13.1-cdh5.3.6 slave1:/usr/local/hive

進入Hive指令行

確定hadoop叢集啟動,且節點正常的前提下,直接在Linux的指令行輸入hive即可。

繼續閱讀