環境:
CentOS7
Hadoop-2.6.4,配置兩個節點:master、slave1
mysql-server
過程:
下載、解壓hive-2.1.0到/usr/hadoop-2.6.4/thirdparty
$ tar zxvf apache-hive-2.1.0-bin.tar.gz
設置 Hive環境變量
編輯 /etc/profile文件, 在其中添加以下內容:
# Hive Env export HIVE_HOME=/usr/hadoop-2.6.4/thirdparty/apache-hive-2.1.0-bin export PATH=$PATH:$HIVE_HOME/bin
使環境變量生效:
$ 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 安裝路徑:
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}/<username> 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 元數據。
- 將 mysql-connector-java-5.1.40-bin.jar 放入 $HIVE_HOME/lib 下。
- hive-site.xml 中配置 MySQL 數據庫連接信息。
<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&characterEncoding=UTF-8&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 來顯示所有的表:
原文地址:https://my.oschina.net/jackieyeah/blog/735424
啟動信息如下: