1.什麼是hive
hive基本思想
Hive是基於Hadoop的一個數據倉庫工具(離線),可以將結構化的數據文件映射爲一張數據庫表,並提供類SQL查詢功能。
Ø 直接使用hadoop所面臨的問題
人員學習成本太高
項目週期要求太短
MapReduce實現複雜查詢邏輯開發難度太大
Ø 爲什麼要使用Hive
操作接口採用類SQL語法,提供快速開發的能力。
避免了去寫MapReduce,減少開發人員的學習成本。
功能擴展很方便。
HIVE特點
Ø 可擴展
Hive可以自由的擴展集羣的規模,一般情況下不需要重啓服務。
Ø 延展性
Hive支持用戶自定義函數,用戶可以根據自己的需求來實現自己的函數。
Ø 容錯
良好的容錯性,節點出現問題SQL仍可完成執行。
2. hive的基本架構
3. hive安裝
3.1. 最簡安裝:用內嵌derby作爲元數據庫
準備工作:安裝hive的機器上應該有HADOOP環境(安裝目錄,HADOOP_HOME環境變量)
安裝:直接解壓一個hive安裝包即可
此時,安裝的這個hive實例使用其內嵌的derby數據庫作爲記錄元數據的數據庫
此模式不便於讓團隊成員之間共享協作
3.2. 標準安裝:將mysql作爲元數據庫
3.2.1. mysql安裝
① 上傳mysql安裝包
② 解壓:
[root@mylove ~]#tar -xvf MySQL-5.6.26-1.linux_glibc2.5.x86_64.rpm-bundle.tar
③ 安裝mysql的server包
[root@mylove ~]#rpm -ivh MySQL-server-5.6.26-1.linux_glibc2.5.x86_64.rpm
依賴報錯:
缺perl
yum install perl
安裝完perl後 ,繼續重新安裝mysql-server
(可以配置一個本地yum源進行安裝:
1、先在vmware中給這臺虛擬機連接一個光盤鏡像
2、掛在光驅到一個指定目錄:mount-t iso9660 -o loop /dev/cdrom /mnt/cdrom
3、將yum的配置文件中baseURL指向/mnt/cdrom
)
[root@mylove ~]#rpm -ivh MySQL-server-5.6.26-1.linux_glibc2.5.x86_64.rpm
又出錯:包衝突conflict with
移除老版本的衝突包:mysql-libs-5.1.73-3.el6_5.x86_64
[root@mylove ~]#rpm -e mysql-libs-5.1.73-3.el6_5.x86_64 --nodeps
繼續重新安裝mysql-server
[root@mylove ~]#rpm -ivh MySQL-server-5.6.26-1.linux_glibc2.5.x86_64.rpm
成功後,注意提示:裏面有初始密碼及如何改密碼的信息
初始密碼:/root/.mysql_secret
改密碼腳本:/usr/bin/mysql_secure_installation
④ 安裝mysql的客戶端包:
[root@mylove ~]#rpm -ivh MySQL-client-5.6.26-1.linux_glibc2.5.x86_64.rpm
⑤ 啓動mysql的服務端:
[root@mylove ~]#service mysql start
Starting MySQL.SUCCESS!
⑥ 修改root的初始密碼:
[root@mylove ~]#/usr/bin/mysql_secure_installation 按提示
⑦ 測試:
用mysql命令行客戶端登陸mysql服務器看能否成功
[root@mylove ~]#mysql -uroot -proot
mysql> showdatabases;
⑧ 給root用戶授予從任何機器上登陸mysql服務器的權限:
mysql> grant all privileges on *.* to 'root'@'%'identified by '你的密碼' with grantoption;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rowsaffected (0.00 sec)
注意點:要讓mysql可以遠程登錄訪問
最直接測試方法:從windows上用Navicat去連接,能連,則可以,不能連,則要去mysql的機器上用命令行客戶端進行授權:
在mysql的機器上,啓動命令行客戶端:
mysql -uroot -proot
mysql>grantall privileges on *.* to 'root'@'%' identified by 'root的密碼' withgrant option;
mysql>flush privileges;
3.2.2. hive的元數據庫配置
vi conf/hive-site.xml
<configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/hive?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>root</value> <description>password to use against metastore database</description> </property> </configuration> |
2、上傳一個mysql的驅動jar包到hive的安裝目錄的lib中
3、配置HADOOP_HOME 和HIVE_HOME到系統環境變量中:/etc/profile
4、source/etc/profile
5、hive啓動測試
然後用命令啓動hive交互界面:
[root@hdp20-04 ~]# hive