hive是基於Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射為一張數據庫表,並提供簡單的sql查詢功能,可以將sql語句轉換為MapReduce任務進行運行。 其優點是學習成本低,可以通過類SQL語句快速實現簡單的MapReduce統計,不必開發專門的MapReduce應用,十分適合數據倉庫的統計分析。
0 hadoop搭建
在搭建hive之前,要保證hadoop搭建完成,hadoop教程可以參考這篇文章 ubuntu18.04下hadoop搭建
1 下載並配置Hive
1.1 下載Hive
在apache官網下載hive包,這裏下載的是hive-1.2.2版本 https://mirrors.tuna.tsinghua.edu.cn/apache/hive/下載好後解壓hive包
然後將解壓包移動到/usr/local/hive下,移之前首先在/usr/local下創建名為hive文件夾
$ sudo mkdir /usr/local/hive
移動hive包到/usr/local/hive目錄下
1.2 配置環境變量
$ sudo vi /etc/profile
增加如下配置:
export HIVE_HOME=/usr/local/hive/apache-hive-1.2.2-bin
export PATH=$PATH:$HIVE_HOME/bin
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:/usr/local/hive/apahe-hive-1.2.2-bin/lib
更新環境變量
$ source /etc/profile
1.3 配置hive-env.s h
進入目錄下,
/usr/local/hive/apache-hive-1.2.1-bin/conf
首先新建一個空文件hive-env.sh:
$ touch hive-env.sh
接着
$ cp hive-env.sh.template hive-env.sh
$ vi hive-env.sh
添加hadoop的路徑,如下:
HADOOP_HOME=/usr/local/hadoop/hadoop-2.9.2
(以下所有配置均在該路徑下。)
1.4 配置hive-site.xml
仍然,首先新建文件hive-site.xml
$ touch hive-site.xml
接着
$ cp hive-default.xml.template hive-site.xml
$ vi hive-site.xml
增加mysql數據庫的連接配置:
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://master: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>hive</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
<description>password to use against metastore database</description>
</property>
修改臨時文件夾的路徑,找到以下兩個位置,並修改為正確路徑:
<property>
<name>hive.exec.local.scratchdir</name>
<value>/home/renziteng/iotmp</value>
<description>Local scratch space for Hive jobs</description>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
<value>/home/renziteng/iotmp</value>
<description>Temporary local directory for added resources in the remote file system.</description>
</property>
我的用户名是renziteng,所以在該路徑下,新建了iotmp文件夾,並授權:
$ mkdir -p /home/renziteng/iotmp
$ chmod -R 775 /home/renziteng/iotmp
1.5 修改hive-config.sh
進入目錄:/usr/local/hive/apache-hive-1.2.2-bin/bin
sudo vi hive-config.sh
在該文件的最前面添加以下內容:
export JAVA_HOME=/usr/local/java/jdk1.8.0_191
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.9.2
export HIVE_HOME=/usr/local/hive/apache-hive-1.2.2-bin
2 安裝並配置mysql
2.1 安裝MySQL Server
在命令行輸入sudo apt-get install mysql-server即可安裝。
2.2 下載MySQL JDBC驅動器
去mysql官網找GA version下載
下載完後解壓
tar -zxvf mysql-connector-java-5.1.47.tar.gz
然後進入解壓後的目錄,把jar包複製到/usr/local/hive/apache-hive-1.2.2-bin/lib/下
$ cp mysql-connector-java-5.1.40-bin.jar /usr/local/hive/apache-hive-1.2.2-bin/lib
2.3 在HDFS中創建目錄和設置權限
啓動hadoop,在hadoop中創建hive需要用到的目錄並設置權限。
$ start-all.sh #啓動hadoop
$ hadoop fs -mkdir /tmp
$ hadoop fs -mkdir -p /user/hive/warehouse
$ hadoop fs -chmod g+w /tmp
$ hadoop fs -chmod g+w /user/hive/warehouse
2.4 初始化meta數據庫
進入/usr/local/hive/apache-hive-1.2.2-bin/lib目錄,初始化Hive元數據對應的MySQL數據庫:
schematool -initSchema -dbType mysql
2.5 啓動Hive
啓動hive前,確保hadoop集羣啓動
$ start-all.sh
$ hive
這樣就成功了!!