Hive系列博文,持續更新~~~html
Hive主要分爲如下幾個部分java
⽤戶接口
1.包括CLI,JDBC/ODBC,WebUI
元數據存儲(metastore)
1.默認存儲在⾃帶的數據庫derby中,線上使⽤時⼀般換爲MySQL
驅動器(Driver)
1.解釋器、編譯器、優化器、執⾏器
Hadoop
1.⽤MapReduce 進⾏計算,⽤HDFS 進⾏存儲node
前提部分:Hive的安裝須要在Hadoop已經成功安裝且成功啓動的基礎上進行安裝。若沒有安裝請移步至大數據系列之Hadoop分佈式集羣部署。mysql
使用包: apache-hive-2.1.1-bin.tar.gz, mysql-connector-java-5.1.27-bin.jarsql
雲盤,密碼:seni數據庫
本文將Hive安裝在Hadoop Master節點上,如下操做僅在master服務器上進行操做。apache
1. 切換至普通用戶 su mfz安全
2. 將gz包上傳至目錄下bash
/home/mfz服務器
3.解壓
tar -xzvf apache-hive-2.1.1-bin.tar.gz
4.目錄:
5.建立hive-site.xml
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hive.metastore.uris</name>
<value>thrift://localhost:9083</value>
<description>ThriftURIfor theremotemetastore. Usedbymetastoreclientto connectto remotemetastore.</description>
</property>
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive_13?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>hadoop</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hadoop</value>
</property>
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
<description>locationofdefault databasefor thewarehouse</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>datanucleus.autoCreateSchema</name>
<value>true</value>
</property>
<property>
<name>datanucleus.autoStartMechanism</name>
<value>SchemaTable</value>
</property>
<property>
<name>datanucleus.schema.autoCreateTables</name>
<value>true</value>
</property>
<property>
<name>beeline.hs2.connection.user</name>
<value>mfz</value>
</property>
<property>
<name>beeline.hs2.connection.password</name>
<value>111111</value>
</property>
</configuration>
5.1由配置文件可看出,咱們須要mysql的數據庫hive_13,數據庫用戶名爲hadoop,數據庫密碼爲hadoop.
6.安裝mysql
6.1 安裝參考文章:Linux學習之CentOS(十三)--CentOS6.4下Mysql數據庫的安裝與配置
6.2 創建mysql數據庫、用戶、權限 參考文章:使用MySQL命令行新建用戶並授予權限的方法
7.啓動驗證Mysql是否安裝配置成功 :使用hadoop用戶登陸
mysql -u hadoop -p
8.配置hive環境變量:
vi /home/mfz/.bash_profile #Hive CONFIG export HIVE_HOME=/home/mfz/apache-hive-2.1.1-bin export PATH=$PATH:$HIVE_HOME/bin #wq .bash_profile #生效配置 source /home/mfz/.bash_profile #驗證是否生效 echo $HIVE_HOME [mfz@master apache-hive-2.1.1-bin]$ echo $HIVE_HOME /home/mfz/apache-hive-2.1.1-bin
9. 將mysql的java connector複製到依賴庫中
cp resources/msyql/mysql-connector-java-5.1.27-bin.jar apache-hive-2.1.1-bin/bin/
10.啓動hive,命令: hive; 若出現以下幾種錯誤請參照對應解決方案;
錯誤1:
緣由:Hive metastore database is not initialized
解決方案:執行命令
schematool -dbType mysql -initSchema
錯誤2:
緣由:hadoop 安全模式打開致使
解決方案:執行命令
#關閉hadoop安全模式 hadoop dfsadmin -safemode leave
11.啓動hive.
A.方式1: hive命令
B.方式2(重要):
beeline
!connect jdbc:hive2://master:10000/default mfz 111111
說明default是database名稱,mfz是master服務器用戶,111111是用戶的登陸密碼.
由於beeline是取代hive客戶端的新客戶端,它訪問HS2來發起hive操做,可是別急着敲下命令,繼續往下看:這裏涉及一個hadoop.proxy的概念:默認HS2是以user=anonymous身份訪問Hdfs的,咱們稱HS2是hadoop的一個代理服務。可是,咱們實際上但願以mfz身份去訪問hdfs,由於此前建立的hive數據目錄都是屬於mfz用戶的,anonymous是沒法訪問的,那麼此時就須要給hadoop配置一個proxyuser,意思是HS2代理能夠支持用戶以mfz身份訪問hdfs,而不是anonymous用戶。
爲了實現這個能力,須要修改hadoop項目的core-site.xml配置來實現(記得重啓namenode和datanode):
<property>
<name>hadoop.proxyuser.mfz.groups</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.mfz.hosts</name>
<value>*</value>
</property>
10.hive 使用命令.
數據定義語句DDL
Create/Drop/Alter Database
Create/Drop/Truncate Table
Alter Table/Partition/Column
Create/Drop/Alter View
Create/Drop/Alter Index
Create/Drop Function
Create/Drop/Grant/Revoke Roles and Privileges
Show
Describe
完~ 關於Hive的Nosql操做命令與Jdbc訪問Hive方式見博文 大數據系列之數據倉庫Hive使用
轉載請註明出處:
做者:mengfanzhu