hive是基於Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射為一張數據庫表,並提供簡單的sql查詢功能,可以將sql語句轉換為MapReduce任務進行運行。 其優點是學習成本低,可以通過類SQL語句快速實現簡單的MapReduce統計,不必開發專門的MapReduce應用,十分適合數據倉庫的統計分析。

0 hadoop搭建
在搭建hive之前,要保證hadoop搭建完成,hadoop教程可以參考這篇文章 ubuntu18.04下hadoop搭建

Ubuntu連不上hive_Ubuntu連不上hive

 

1 下載並配置Hive
1.1 下載Hive
在apache官網下載hive包,這裏下載的是hive-1.2.2版本 https://mirrors.tuna.tsinghua.edu.cn/apache/hive/下載好後解壓hive包

Ubuntu連不上hive_hadoop_02

然後將解壓包移動到/usr/local/hive下,移之前首先在/usr/local下創建名為hive文件夾

$ sudo mkdir /usr/local/hive

移動hive包到/usr/local/hive目錄下

Ubuntu連不上hive_apache_03

 

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下載

Ubuntu連不上hive_hadoop_04

Ubuntu連不上hive_hive_05

下載完後解壓
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

這樣就成功了!!