Hive之 hive-1.2.1 + hadoop 2.7.4 集群安裝


一、 相關概念

Hive Metastore有三種配置方式,分別是:

Embedded Metastore Database (Derby) 內嵌模式
Local Metastore Server 本地元存儲
Remote Metastore Server 遠程元存儲
1.1 Metadata、Metastore作用

metadata即元數據。元數據包含用Hive創建的database、tabel等的元信息。
元數據存儲在關系型數據庫中。如Derby、MySQL等。

Metastore的作用是:客戶端連接metastore服務,metastore再去連接MySQL數據庫來存取元數據。有了metastore服務,就可以有多個客戶端同時連接,而且這些客戶端不需要知道MySQL數據庫的用戶名和密碼,只需要連接metastore 服務即可。

1.2三種配置方式區別

內嵌模式使用的是內嵌的Derby數據庫來存儲元數據,也不需要額外起Metastore服務。這個是默認的,配置簡單,但是一次只能一個客戶端連接,適用於用來實驗,不適用於生產環境。

本地元存儲和遠程元存儲都采用外部數據庫來存儲元數據,目前支持的數據庫有:MySQL、Postgres、Oracle、MS SQL Server.在這里我們使用MySQL。

本地元存儲和遠程元存儲的區別是:本地元存儲不需要單獨起metastore服務,用的是跟hive在同一個進程里的metastore服務。遠程元存儲需要單獨起metastore服務,然后每個客戶端都在配置文件里配置連接到該metastore服務。遠程元存儲的metastore服務和hive運行在不同的進程里。

在生產環境中,建議用遠程元存儲來配置Hive Metastore。

 

前提: 已經安裝好三個節點的 hadoop 集群,參考 http://blog.csdn.net/zhang123456456/article/details/77621487
這里選用mySql作為元數據庫,將mySql和Hive安裝在master服務器上
統一給放到/usr/local/hadoop

1.下載安裝文件,並解壓:
cd /usr/local/hadoop
wget http://mirrors.cnnic.cn/apache/hive/hive-1.2.1/apache-hive-1.2.1-bin.tar.gz
tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /usr/local/hadoop

-- 如果 hive 有專屬的用戶,記得賦權
sudo chown -R XXX:XXX /usr/local/hadoop/apache-hive-1.2.1-bin

2.設置環境變量
sudo vim /etc/profile
在最后加上
export HIVE_HOME=/usr/local/hadoop/apache-hive-1.2.1-bin(這兒是你的hive的解壓路徑)
export PATH=$PATH:$HIVE_HOME/bin
source /etc/profile ->使配置文件生效

安裝mysql , 參考 http://blog.csdn.net/zhang123456456/article/details/53608554 ,注意MySQL數據庫不能設置為BINLOG_FORMAT = STATEMENT,否則報Cannot execute statement: impossible to write to binary log 。

3. 在 mysql 數據庫中創建 hive 專屬數據庫 與 用戶
mysql -u root -p ->輸入之后會提示你輸入之前你設置的root密碼
create database hiveDB; -> 建立數據庫
create user 'hive' identified by 'hive'; ->創建用戶
grant all privileges on hivedb.* to 'hive'@'%' identified by 'hive'; ->將允許從任意地點登陸的hive用戶對hiveDB數據庫的所有表執行增刪查改四種操作
flush privileges; -> 刷新系統權限表

4.拷貝JDBC驅動包
將mySql的JDBC驅動包復制到Hive的lib目錄下
cp mysql-connector-java-5.1.34-bin.jar  /usr/local/hadoop/apache-hive-1.2.1-bin/lib


5.修改Hive配置文件:
cd apache-hive-1.2.1-bin/conf/
cp hive-default.xml.template hive-site.xml
vi hive-site.xml  #修改相應配置

hive.exec.scratchdir       ## 所有${system:java.io.tmpdir}和@{system:user.name}  都替換掉

/usr/local/hadoop/apache-hive-1.2.1-bin/iotmp

javax.jdo.option.ConnectionURL
jdbc:mysql://HadoopMaster:3306/hivedb?useUnicode=true&characterEncoding=UTF-8&createDatabaseIfNotExist=true

jdbc:mysql://hadp-master:3306/hivedb?useUnicode=true&createDatabaseIfNotExist=true

javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver

javax.jdo.option.ConnectionUserName
hive

javax.jdo.option.ConnectionPassword
hive

hive.metastore.warehouse.dir
/user/hive/warehouse
location of default database for the warehouse


 

說明:
hive.exec.scratchdir->執行HIVE操作訪問HDFS用於臨時存儲數據的目錄。目錄權限設置為733。我這兒用的是/tmp/hive目錄。
javax.jdo.option.ConnectionURL -> 設置hive通過JDBC鏈接MYSQL數據庫存儲metastore存放的數據庫地址
javax.jdo.option.ConnectionDriverName ->設置鏈接mysql的驅動名稱。
javax.jdo.option.ConnectionUserName -> 設置存儲metastore內容的數據庫用戶名
javax.jdo.option.ConnectionPassword -> 設置存儲metastore內容的數據庫用戶名密碼
hive.metastore.warehouse.dir -> 設置用於存放hive元數據的目錄位置,改配置有三種模式,內嵌模式,本地元數據,遠程元數據。如果hive.metastore.uris是空,則是本地模式。否則則是遠程模式。

②配置hive-env.sh,這個文件也是沒有的,是hive-env.sh.template復制過來的

sudo cp hive-env.sh.template hive-env.sh
sudo vim hive-env.sh
將jdk的路徑和hadoop的家目錄導入到這個文件中:
export JAVA_HOME=/usr/local/jdk1.8.0_131
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.7.4/

6.分發Hive分別到slave1,slave2上
scp -r /usr/local/hadoop/apache-hive-1.2.1-bin hadp-node1:/usr/local/hadoop/
scp -r /usr/local/hadoop/apache-hive-1.2.1-bin hadp-node2:/usr/local/hadoop/

配置環境變量如同master。

 

7.測試Hive

進入到Hive的安裝目錄,命令行:
cd $HIVE_HOME/bin
./hive --service metastore &
./hive --service hiveserver2 &
./hive

hive> show tables;
OK
Time taken: 1.995 seconds

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM