轉自:https://www.cnblogs.com/upupfeng/p/13452385.html#%E9%83%A8%E7%BD%B2hive
使用docker快速搭建hive環境
記錄一下使用docker快速搭建部署hive環境
寫在前面
想練練Hive SQL,但是沒有hive shell環境。現在只有一台空的CentOS 7機子,一想要弄jdk、hadoop、mysql、hive就頭疼。
於是在網上找了找,發現用docker部署hive會快很多,在此記錄一下部署過程。
以下過程每一步在文末都附有參考文檔,出錯的朋友可以去看對應的參考文檔。
步驟
- 安裝docker
- 安裝git,配置github。因為用的是github上大佬寫好的docker compose服務,所以要git clone下來。
- 部署hive
- 使用hive命令行
- 收尾工作
安裝docker
要用到docker和docker-compose,我們依次來安裝
安裝docker
如果你之前安裝過 docker,請先刪掉
yum remove docker docker-common docker-selinux docker-engine
安裝一些依賴
yum install -y yum-utils device-mapper-persistent-data lvm2
拉取docker-ce.repo
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
把軟件倉庫地址替換為 TUNA:
sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
最后安裝(默認安裝的是最新版docker):
yum makecache fast yum install docker-ce
啟動docker,設為開機自啟,查看docker版本
systemctl start docker systemctl enable docker docker version
至此,不報錯的話,docker就安裝好了。
安裝docker-compose
依次執行以下命令
curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose docker-compose --version
配置docker國內鏡像源(可選)
我在后面pull docker鏡像時,速度很慢,所以又配了一下國內鏡像加速源,可配可不配。
參考https://www.cnblogs.com/reasonzzy/p/11127359.html這篇文章,我配的是阿里雲鏡像。
安裝git & 配置github
執行以下命令就可以安裝git了
yum -y install git
配置github的話,比較常規的操作,可以參考https://www.cnblogs.com/smartwen666/p/7891108.html這篇文章。
部署Hive
准備工作都做完了,可以開始部署Hive了。
docker-hive
用的是大佬寫好的docker-hive。
上鏈接:https://github.com/big-data-europe/docker-hive
可以根據README.md中的介紹,來進行部署、測試。
開始部署
依次執行以下命令
git clone git@github.com:big-data-europe/docker-hive.git # 注:本文所有docker-compose都是在docker-hive目錄下執行的 cd docker-hive # 這步在后台起一個hive,元數據庫用的是postgresql # 會費一點時間,需要耐心等待 docker-compose up -d
等上面命令運行完成后,可以執行docker-compose ps
命令查看正在運行的鏡像。
下圖是我運行這個命令的截圖:
可以看到有namenode、datanode、hive等,表示部署成功了。
使用Hive命令行
依次執行以下步驟
# 進入bash docker-compose exec hive-server bash # 使用beeline客戶端連接 /opt/hive/bin/beeline -u jdbc:hive2://localhost:10000
#或者直接用hive命令連接(退出exit):
hive
查看Hive表存儲目錄:
hadoop fs -ls /user/hive/warehouse
# 執行SQL。這兩句是可以直接執行的,鏡像帶了example文件 CREATE TABLE pokes (foo INT, bar STRING); LOAD DATA LOCAL INPATH '/opt/hive/examples/files/kv1.txt' OVERWRITE INTO TABLE pokes; # 查詢 select * from pokes;
查詢結果:
至此,就可以開始愉快的寫Hive SQL了。
查找表信息:
hive> show create table pokes; OK CREATE TABLE `pokes`( `foo` int, `bar` string) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 'hdfs://namenode:8020/user/hive/warehouse/pokes' TBLPROPERTIES ( 'transient_lastDdlTime'='1606614975') Time taken: 1.068 seconds, Fetched: 13 row(s)
瀏覽器查看hdfs -> Utilities:
hive 分區(靜態分區,動態分區):
分區表的的字段不能是定義表的字段,不然會報重復columns
hive> create table t1( > id int > ,name string > ,hobby array<string> > ,add map<String,string> > ) > partitioned by (name string) > row format delimited > fields terminated by ',' > collection items terminated by '-' > map keys terminated by ':' > ; FAILED: SemanticException [Error 10035]: Column repeated in partitioning columns
收尾工作
安裝vi、lrzsz
准備sql表數據時,發現這個docker image默認沒有安裝vi,就自己安一個吧。
apt-get update apt-get install vim # lrzsz是一個上傳下載文件的工作,也安裝一下 apt-get install lrzsz
關閉相關命令
# 關閉hive相關服務 docker-compose kill # 關閉docker systemctl stop docker # 跑路 init 0
END
一套操作下來,好像也沒省多少事。但是有docker,部署亂七八糟的環境還是挺省心的。
安裝過程有問題的小伙伴,可以看下面的參考鏈接,也可以評論交流。
參考鏈接
清華鏡像站安裝docker:https://mirror.tuna.tsinghua.edu.cn/help/docker-ce/
Centos7下安裝Docker:https://blog.csdn.net/u014069688/article/details/100532774
Docker Compose教程:https://www.runoob.com/docker/docker-compose.html
Docker Compose詳解:https://www.jianshu.com/p/658911a8cff3
配置docker國內鏡像源:https://www.cnblogs.com/reasonzzy/p/11127359.html
git配置連接github:https://www.cnblogs.com/smartwen666/p/7891108.html
docker-hive github:https://github.com/big-data-europe/docker-hive