CentOS7安裝hive-2.1.0

環境:java

CentOS7mysql

Hadoop-2.6.4,配置兩個節點:master、slave1sql

mysql-server數據庫

過程:apache

下載、解壓hive-2.1.0到/usr/hadoop-2.6.4/thirdpartyide

$ tar zxvf apache-hive-2.1.0-bin.tar.gz

設置 Hive環境變量

編輯 /etc/profile文件, 在其中添加如下內容:oop

# Hive Env
export HIVE_HOME=/usr/hadoop-2.6.4/thirdparty/apache-hive-2.1.0-bin
export PATH=$PATH:$HIVE_HOME/bin

使環境變量生效:spa

$ source /etc/profile

配置Hive

配置文件重命名

在運行 Hive 以前須要使用如下命令修改配置文件:命令行

複製代碼

cd /usr/hadoop-2.6.4/thirdparty/apache-hive-2.1.0-bin/conf
cp hive-env.sh.template hive-env.sh 

cp hive-default.xml.template hive-site.xml 

cp hive-log4j2.properties.template hive-log4j2.properties 

cp hive-exec-log4j2.properties.template hive-exec-log4j2.properties

複製代碼

修改hive-env.sh

由於 Hive 使用了 Hadoop, 須要在 hive-env.sh 文件中指定 Hadoop 安裝路徑:server

export JAVA_HOME=/usr/java/jdk-1.8.0_101    ##Java路徑
export HADOOP_HOME=/usr/hadoop-2.6.4   ##Hadoop安裝路徑
export HIVE_HOME=/usr/hadoop-2.6.4/thirdparty/apache-hive-2.1.0-bin    ##Hive安裝路徑
export HIVE_CONF_DIR=$HIVE_HOME/conf    ##Hive配置文件路徑

修改hive-site.xml

對應<name/>,修改爲以下<value/>值:

複製代碼

<property>
    <name>hive.exec.scratchdir</name>
    <value>/tmp/hive-${user.name}</value>
    <description>HDFS root scratch dir for Hive jobs which gets created with write all (733) permission. For each connecting user, an HDFS scratch dir: ${hive.exec.scratchdir}/&lt;username&gt; is created, with ${hive.scratch.dir.permission}.</description>
  </property>
  <property>
    <name>hive.exec.local.scratchdir</name>
    <value>/tmp/${user.name}</value>
    <description>Local scratch space for Hive jobs</description>
  </property>
  <property>
    <name>hive.downloaded.resources.dir</name>
    <value>/tmp/hive/resources</value>
    <description>Temporary local directory for added resources in the remote file system.</description>
  </property>
<property>
    <name>hive.querylog.location</name>
    <value>/tmp/${user.name}</value>
    <description>Location of Hive run time structured log file</description>
  </property>
<property>
    <name>hive.server2.logging.operation.log.location</name>
    <value>/tmp/${user.name}/operation_logs</value>
    <description>Top level directory where operation logs are stored if logging functionality is enabled</description>
  </property>

複製代碼

配置Hive Metastore

默認狀況下, Hive的元數據保存在了內嵌的 derby 數據庫裏, 但通常狀況下生產環境使用 MySQL 來存放 Hive 元數據。

  1. 將 mysql-connector-java-5.1.40-bin.jar 放入 $HIVE_HOME/lib 下。
  2. hive-site.xml 中配置 MySQL 數據庫鏈接信息。

複製代碼

<property>
 <name>javax.jdo.option.ConnectionURL</name>
 <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8&amp;useSSL=false</value>
</property>
<property>
 <name>javax.jdo.option.ConnectionDriverName</name>
 <value>com.mysql.jdbc.Driver</value>
</property>
<property>
 <name>javax.jdo.option.ConnectionUserName</name>
 <value>hive</value>
</property>
<property>
 <name>javax.jdo.option.ConnectionPassword</name>
 <value>hive</value>
</property>

複製代碼

爲Hive建立HDFS目錄

在 Hive 中建立表以前須要使用如下 HDFS 命令建立 /tmp 和 /user/hive/warehouse (hive-site.xml 配置文件中屬性項 hive.metastore.warehouse.dir 的默認值) 目錄並給它們賦寫權限。

start-dfs.sh
hdfs dfs -mkdir /tmp
hdfs dfs -mkdir -p /usr/hive/warehouse
hdfs dfs -chmod g+w /tmp
hdfs dfs -chmod g+w /usr/hive/warehouse

給mysql建立用戶hive/密碼hive:

$ mysql -u root -p #密碼已設爲123456
mysql> CREATE USER 'hive'@'localhost' IDENTIFIED BY "hive";
mysql> grant all privileges on *.* to hive@localhost identified by 'hive';

 

運行Hive

在命令行運行 hive 命令時必須保證 HDFS 已經啓動。能夠使用 start-dfs.sh 來啓動 HDFS。

從 Hive 2.1 版本開始, 咱們須要先運行 schematool 命令來執行初始化操做。

$ schematool -dbType mysql -initSchema

運行結果:

要使用 Hive CLI(Hive command line interface), 能夠在終端輸入如下命令:

$ hive

啓動信息以下:

 

 

 使用 show tables 來顯示全部的表:

 

相關文章
相關標籤/搜索