大數據分析工具——hive入門

MySQL 編程語言 大數據 Facebook 靜雅惜靈 2017-04-17

作者:2551529836

Hive

** Facebook開源

** 官網:hive.apache.org

** Hive是基於Hadoop的一個數據倉庫工具

Hive與數據庫:

數據庫: mysql、oracle、DB2、sqlserver

數據倉庫 !== 數據庫 換言之, Hive不是數據庫

為什麼要選擇hive

** MapReduce編程成本高

** 針對傳統的DBA,不會不熟悉java,要想數據分析,藉助Hive

Hive簡介:

** 流程

** hql --> Hive(java) --> mapreduce -->yarn --> hdfs

** 本質: 將HQL轉化成MapReduce程序

** 使用MapReduce計算模型,運行在yarn平臺之上

** Hive適合離線批量處理,延時比較大

** 不適合在線業務實時分析結果,業務要求延時較低的場景不適合

Hive體系結構

** 用戶接口: Client

** 終端命令行CLI --主要的一種使用方式

** JDBC方式 --幾乎不用

** 元數據:metastore

** 默認apache使用的是derby數據庫(只能有一個客戶端使用),CDH使用postgreDB

** 企業通常我們會選擇另外一種mysql來存儲

** 元數據包括:表名、表所屬的數據庫(默認是default)、

表的擁有者、列/分區字段、表的類型(是否是外部表)、

表的數據所在目錄等

** 這裡並沒有存儲Hive表的真實數據

** Hadoop

** 使用HDFS進行存儲

** 使用MapReduce進行計算

** 驅動器: Driver

** 解析器: 解析Hql語句

** 編譯器: 把sql語句翻譯成MapReduce程序

** 優化器: 優化sql語句

** 執行器: 在yarn平臺運行MapReduce程序

====Hive安裝======================================================

** 版本 0.13.1(和後面使用到的框架兼容性好)

hive安裝所需要的環境:

1、安裝JDK,然後測試

$ java -version

2、安裝Hadoop

** 確保Hadoop可以正常使用(測試:上傳文件、或者運行jar)

$ hdfs dfs -mkdir /input2 #在HDFS上創建文件夾,沒有類似-cd進入目錄的參數

$ hdfs dfs -mkdir -p /aaa/bbb/ccc #級聯創建目錄

$ hdfs dfs -ls / #查看

$ hdfs dfs -put b.txt /input #把本地文件拷到HDFS

$ hdfs dfs -cat /input2/b.txt #查看文件

$ hdfs dfs -rm /input2/b.txt #刪除文件

$ hdfs dfs -rmr /input? #遞歸刪除文件夾和裡面的文件,推薦使用'-rm -r'格式;單字符通配符'?'

$ hdfs dfs -help

3、安裝mysql

$ su -

# yum -y install mysql --安裝mysql客戶端、常用命令

# yum -y install mysql-server --mysql服務

# yum -y install mysql-devel --mysql develop擴展包

***以上可以合併為一句,-y表示所有提問回答都為yes

# yum -y install mysql mysql-server mysql-devel

# rpm -qa|grep mysql --查看安裝的mysql

# rpm -ql mysql-server-5.1.73-7.el6.x86_64 --查看安裝位置

# rpm -e --nodeps mysql-server-5.1.73-7.el6.x86_64 --卸載,nodeps:不檢查依賴

# service mysqld start --啟動mysql服務

# chkconfig mysqld on --設置開機啟動

# /usr/bin/mysqladmin -uroot password 'root' --初始化密碼,只能執行一次

給用戶授權:

# mysql -uroot -proot

*** grant 權限 on 數據庫對象(數據庫.表) to 用戶

mysql> grant all on *.* to root@'blue01.mydomain' identified by 'root';

mysql> flush privileges; #刷新授權表,可以不執行

mysql> set password for root@localhost = password('root'); --修改密碼

mysql> show databases;

** mysql數據庫默認只允許root用戶通過localhost(127.0.0.1)來登錄使用

** 想要使用Windows上的Navicat登錄,需要授權

** mysql> grant all on *.* to root@'192.168.122.1' identified by 'root';

附:yum命令和rpm命令安裝的都是rpm包

yum安裝包的來源: 來自互聯網(由倉庫配置文件指定)

rpm安裝包的來源: 先提取現在需要安裝的軟件包

----------------------

4、開始安裝Hive

# su - tom

$ tar zxf /opt/softwares/apache-hive-0.13.1-bin.tar.gz

** 在conf/目錄:

$ cp -a hive-env.sh.template hive-env.sh --重命名,-a連同原來屬性一起復制

$ cp -a hive-default.xml.template hive-site.xml

5、修改hive-env.sh

JAVA_HOME=/opt/modules/jdk1.7.0_67

HADOOP_HOME=/opt/modules/hadoop-2.5.0

export HIVE_CONF_DIR=/opt/modules/apache-hive-0.13.1-bin/conf

6、配置hive-site.xml,注意:用戶名和密碼不可以有空格

<property>

<name>javax.jdo.option.ConnectionURL</name>

<value>jdbc:mysql://blue01.mydomain:3306/metastore?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>

7、拷貝mysql驅動到lib/

** 若是jar已解壓,則不必執行這步:$ tar zxf mysql-connector-java-5.1.27.tar.gz

$ cp mysql-connector-java-5.1.27-bin.jar /opt/modules/apache-hive-0.13.1-bin/lib/

8、進入Hadoop目錄,修改目錄權限

** /tmp存放臨時文件

$ bin/hadoop fs -chmod g+w /tmp #給用戶組加上寫的權限

** /user/hive/warehouse為Hive存放數據的目錄

$ bin/hdfs dfs -mkdir -p /user/hive/warehouse

$ bin/hadoop fs -chmod g+w /user/hive/warehouse

9、啟動客戶端使用Hive

$ bin/hive --用法幾乎跟mysql一樣

hive> show databases;

相關推薦

推薦中...