docker安裝hive1.2

構建數據倉庫 (Slave1)
1、解壓數據庫

tar -zxvf apache-hive-1.2.2-bin.tar.gz /usr/local/
cd /usr/local/
mv apache-hive-1.2.2 hive

2、爲hive添加環境變量
編輯/etc/profile文件,增加hive相關的環境變量配置
docker安裝hive1.2
profile文件編輯完成後,執行下面命令,讓配置生效,命令是
docker安裝hive1.2
3、配置hive-site.xml
hive-site.xml相關的配置

cd /usr/local/hive/conf
cp hive-default.xml.template hive-site.xml

然後用hadoop創建目錄

hadoop fs -mkdir -p /user/hive/warehouse
hadoop fs -mkdir -p /tmp/hive/

給剛纔新建的目錄賦予讀寫權限,執行命令:

hadoop fs -chmod 777 /user/hive/warehouse
hadoop fs -chmod 777 /tmp/hive

之所以創建目錄是因爲hive-site-xml裏有這樣的配置
docker安裝hive1.2
docker安裝hive1.2

檢查目錄是否創建成功

hadoop fs -ls /user/hive/
hadoop fs -ls /tmp/

docker安裝hive1.2

修改hive-site.xml中的臨時目錄
將hive-site.xml文件中的${system:java.io.tmpdir}替換爲hive的臨時目錄,例如我替換爲/usr/local/hive/tmp,將${system:user.name}都替換爲root, 並且賦予讀寫權限
docker安裝hive1.2
docker安裝hive1.2
注意要把所有的都替換,這裏用正則替換

sed -i 's@${system:java.io.tmpdir}@/usr/local/hive/tmp/@g' hive-site.xml
sed -i 's@${system:user.name}@root@g' hive-site.xml

修改hive-site.xml數據庫相關的配置
搜索javax.jdo.option.ConnectionURL,將該name對應的value修改爲MySQL的地址
docker安裝hive1.2
docker安裝hive1.2
搜索javax.jdo.option.ConnectionDriverName,將該name對應的value修改爲MySQL驅動類路徑
docker安裝hive1.2
搜索javax.jdo.option.ConnectionUserName,將對應的value修改爲MySQL數據庫登錄名:
docker安裝hive1.2
搜索javax.jdo.option.ConnectionPassword,將對應的value修改爲MySQL數據庫的登錄密碼:
docker安裝hive1.2
搜索hive.metastore.schema.verification,將對應的value修改爲false:
docker安裝hive1.2
4、加載mysql驅動
將MySQL驅動包上載到lib目錄
cd /usr/local/hive/lib/
wget ftp://172.18.79.77/mysql-connector-java-5.1.5-bin.jar
注意這裏的地址是我的私有地址,可以去百度找mysql驅動包,或者在我的博客裏下載(因爲51cto上重複的資料不能上傳,很無語,就隨便加了個txt文件和驅動包弄成一個壓縮包再上傳的)。
docker安裝hive1.2
5、修改hive-env.sh
新建hive-env.sh文件並進行修改

cd /usr/local/hive/conf

將hive-env.sh.template文件複製一份,並且改名爲hive-env.sh

cp hive-env.sh.template hive-env.sh

打開hive-env.sh配置並且添加以下內容:

export HADOOP_HOME=/usr/local/hadoop
export HIVE_CONF_DIR=/usr/local/hive/conf
export HIVE_AUX_JARS_PATH=/usr/local/hive/lib

docker安裝hive1.2

6、初始化mysql
對MySQL數據庫進行初始化
進入mysql數據庫,創建hive用戶和hive數據庫

CREATE USER 'hive'@'localhost' IDENTIFIED BY "hive";
grant all privileges on . to hive@localhost identified by 'hive';
create database hive;

刷新數據庫

flush privileges;

退出

exit;

測試hive用戶是否創建成功

mysql -uhive -p
Enter passwd: hive

進入到hive的bin目錄 執行命令:

cd /usr/local/hive/bin

對數據庫進行初始化,執行命令:

schematool -initSchema -dbType mysql

執行成功後,hive數據庫裏已經有一堆表創建好了
docker安裝hive1.2
7、測試hive
啓動hive並測試
進入到hive的bin目錄執行命令:

cd /usr/local/hive/bin

執行hive腳本進行啓動,執行命令:

./hive

docker安裝hive1.2

執行查看sum函數的詳細信息的命令:

desc function sum;

docker安裝hive1.2

執行新建數據庫的hive命令:

create database db_hive;

docker安裝hive1.2

在剛纔創建的數據庫中創建數據表,執行hive命令:

use db_hive;
create table student(id int,name string) row format delimited fields terminated by '\t';

docker安裝hive1.2

將文件數據寫入表中
在/usr/local/hive目錄內新建一個文件
執行Linux命令(最好是重新打開一個終端來執行):

touch /opt/hive/student.txt

docker安裝hive1.2

docker安裝hive1.2

說明:ID和name直接是TAB鍵,不是空格,因爲在上面創建表的語句中用了terminated by '\t'所以這個文本里id和name的分割必須是用TAB鍵(複製粘貼如果有問題,手動敲TAB鍵吧),還有就是行與行之間不能有空行,否則下面執行load,會把NULL存入表內,該文件要使用unix格式,如果是在windows上用txt文本編輯器編輯後在上載到服務器上,需要用工具將windows格式轉爲unix格式,例如可以使用Notepad++來轉換。
完成上面的步驟後,在磁盤上/opt/hive/student.txt文件已經創建成功,文件中也已經有了內容,在hive命令行中執行加載數據的hive命令:

load data local inpath '/usr/local/hive/std.txt' into table db_hive.std;

docker安裝hive1.2

執行命令,查看是否把剛纔文件中的數據寫入成功
docker安裝hive1.2

查看頁面
http://172.18.74.105:50070/explorer.html#/user/hive/warehouse/db_hive.db/student
docker安裝hive1.2

點擊std.txt
docker安裝hive1.2

在MySQL數據庫中執行select語句,查看hive創建的表

select * from hive.TBLS;

docker安裝hive1.2

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章