作者: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;