Hive的介紹和搭建

Hive的定義

Hive 是建立在 Hadoop 上的數據倉庫基礎構架。它提供了一系列的工具,可以用來進行數據提取轉化加載(ETL ),這是一種可以存儲、查詢和分析存儲在 Hadoop 中的大規模數據的機制。Hive 定義了簡單的類 SQL 查詢語言,稱爲 HQL ,它允許熟悉 SQL 的用戶查詢數據。同時,這個語言也允許熟悉 MapReduce 開發者的開發自定義的 mapper 和 reducer 來處理內建的 mapper 和 reducer 無法完成的複雜的分析工作。

Hive與傳統數據庫比較

在這裏插入圖片描述
1. 查詢語言。類 SQL 的查詢語言 HQL。熟悉 SQL 開發的開發者可以很方便的使用 Hive 進行開發。
2. 數據存儲位置。所有 Hive 的數據都是存儲在 HDFS 中的。而數據庫則可以將數據保存在塊設備或者本地文件系統中。
3. 數據格式。Hive 中沒有定義專門的數據格式。而在數據庫中,所有數據都會按照一定的組織存儲,因此,數據庫加載數據的過程會比較耗時。
4. 數據更新。Hive 對數據的改寫和添加比較弱化,0.14版本之後支持,需要啓動配置項。而數據庫中的數據通常是需要經常進行修改的。
5. 索引。Hive 在加載數據的過程中不會對數據進行任何處理。因此訪問延遲較高。數據庫可以有很高的效率,較低的延遲。由於數據的訪問延遲較高,決定了 Hive 不適合在線數據查詢。
6. 執行計算。Hive 中執行是通過 MapReduce 來實現的而數據庫通常有自己的執行引擎。
7. 數據規模。由於 Hive 建立在集羣上並可以利用 MapReduce 進行並行計算,因此可以支持很大規模的數據;對應的,數據庫可以支持的數據規模較小。

Hive的安裝

安裝Mysql服務

  • 查看mysql的依賴 :rpm -qa | grep mysql
  • 刪除mysql的依賴
    rpm -e --nodeps rpm -qa | grep mysql
    rpm -e --nodeps rpm -qa | grep MySQL
  • 離線安裝mysql
    rpm -ivh MySQL-server-5.1.73-1.glibc23.x86_64.rpm
    rpm -ivh MySQL-client-5.1.73-1.glibc23.x86_64.rpm
  • 啓動mysql服務
    service mysql start
  • 加入到開機啓動項 :chkconfig mysql on
  • 初始化配置mysql服務(第一次直接回車,後面跟着提示設置密碼,自己設置密碼)
    whereis mysql_secure_installation
    執行腳本/usr/bin/mysql_secure_installation
  • 訪問mysql服務並修改權限 : mysql -uroot -proot
  • 切換數據庫:use mysql;
  • 查看用戶權限表: select user,host from user;
  • update user set host = ‘%’ where user = ‘root’ (提示報錯不用管,忽略)
  • 刷新權限:flush privileges

安裝hive包,解壓

  • 解壓hive的安裝包
    tar -zxvf apache-hive-1.2.1-bin.tar.gz

  • 修改下目錄名稱
    mv apache-hive-1.2.1-bin hive-1.2.1

  • 備份配置文件
    cp hive-env.sh.template hive-env.sh
    cp hive-default.xml.template hive-site.xml

  • 配置hive的配置文件(hive的配置文件比較大,在linux中查找某項配置比較難,可以先將hive-site.xml文件複製到windows用文本編輯打開,然後ctrl+f查關鍵字修改,修改之後再放回到hive
    的conf目錄)

      1. 修改hive-env.sh
     		加入三行內容
     		HADOOP_HOME=/usr/local/soft/hadoop-2.6.0
     		JAVA_HOME=/usr/local/soft/jdk1.8.0_171
     		HIVE_HOME=/usr/local/soft/hive-1.2.1
      2. 修改hive-site.xml
     		```bash
     				<property>
     					<name>javax.jdo.option.ConnectionURL</name>
     					<value>jdbc:mysql://192.168.1.80: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>root</value>
     				</property>
     				<property>
     					<name>hive.querylog.location</name>
     					<value>/usr/local/soft/hive-1.2.1/tmp</value>
     				</property>
     				<property>
     					<name>hive.exec.local.scratchdir</name>
     					<value>/usr/local/soft/hive-1.2.1/tmp</value>
     				</property>
     				<property>
     					<name>hive.downloaded.resources.dir</name>
     					<value>/usr/local/soft/hive-1.2.1/tmp</value>
     				</property>
     			```		
    
  • 拷貝mysql驅動到$HIVE_HOME/lib目錄下
    cp /usr/local/soft/mysql-connector-java-5.1.17.jar …/lib/

  • 將hadoop的jline-0.9.94.jar的jar替換成hive的版本。

  • 啓動Hive
    ./hive
    在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章