Hive安装配置,
说明
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
注:Hive需要安装在成功部署Hadoop的集群中,并且集群已经正常启动。
1、下载Hive安装包
Hive的官方下载地址为https://hive.apache.org/downloads.html,下载完成后我们将该压缩文件放到想要安装的目录下,进行解压。
[root@slave2 hive]# tar -zxvf apache-hive-2.3.2-bin.tar.gz
2、配置Hive
(1)配置系统配置文件(/etc/profile)
export HIVE_HOME=/usr/cx/hive/apache-hive-2.3.2-bin
export PATH=$HADOOP_HOME/bin:$PATH:$JAVA_HOME/bin:$PATH:$HIVE_HOME/bin
(2)配置hive-site.xml文件
hive-site.xml文件默认是没有的,我们需要将hive-site.xml.template文件复制为hive-site.xml。
[root@slave2 conf]# cp hive-default.xml.template hive-site.xml
然后对hive-site.xml文件进行配置
<configuration>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
<description>location of default database for the warehouse</description>
</property>
<property>
<name>hive.exec.scratchdir</name>
<value>/user/hive/tmp</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.querylog.location</name>
<value>/user/hive/log</value>
<description>Location of Hive run time structured log file</description>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://10.128.0.134:3306/hive?createDatabaseIfNotExist=true</value>
<description>
JDBC connect string for a JDBC metastore.
To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.
For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.
</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>hadoop</value>
<description>Username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>******</value>
<description>password to use against metastore database</description>
</property>
</configuration>
该文件中主要配置了hive的数据存储目录和数据库连接信息,这里的hive数据库就是我们在上篇博客《CentOS安装MySQL》中创建的数据库。
(3)修改hive-env.sh文件
hive-env.sh文件默认也是没有的,我们将hive-env.sh.template文件复制为hive-env.sh。
[root@slave2 conf]# cp hive-env.sh.template hive-env.sh
并添加如下内容:
export JAVA_HOME=/usr/cx/jdk1.8.0_60
export HADOOP_HOME=/usr/cx/hadoop-2.7.1
export HIVE_HOME=/usr/cx/hive/apache-hive-2.3.2-bin
export HIVE_CONF_DIR=/usr/cx/hive/apache-hive-2.3.2-bin/conf
复制 hive-log4j2.properties.template和 hive-exec-log4j2.properties.template
[root@slave2 conf]# cp hive-log4j2.properties.template hive-log4j2.properties
[root@slave2 conf]# cp hive-exec-log4j2.properties.template hive-exec-log4j2.properties
(4)在hdfs 中创建下面的目录 ,并且授权
hive的数据实际是存储在hdfs中,所以/user/hive/warehouse实际是在hdfs中创建。
hdfs dfs -mkdir -p /user/hive/warehouse
hdfs dfs -mkdir -p /user/hive/tmp
hdfs dfs -mkdir -p /user/hive/log
hdfs dfs -chmod -R 777 /user/hive/warehouse
hdfs dfs -chmod -R 777 /user/hive/tmp
hdfs dfs -chmod -R 777 /user/hive/log
(5)mkdir /home/hadoop/hive-2.1.1/tmp
在配置文件 hive-site.xml 里面
把{system:java.io.tmpdir} 改成 /home/hadoop/hive-2.1.1/tmp/
把 {system:user.name} 改成 {user.name}
配置工作到这已经完成了,接下来我们还要将mysql的mysql-connector-java-5.1.7-bin.jar复制到hive的lib目录下,目的是为了与mysql通信,将hive中的元数据放到mysql中存储。
(6)初始化hive
[root@slave2 conf]# schematool -dbType mysql -initSchema hive 密码
初始化成功后,MySQL的hive数据库中会生成多张表,如下所示:
mysql> show tables;
+---------------------------+
| Tables_in_hive |
+---------------------------+
| AUX_TABLE |
| BUCKETING_COLS |
| CDS |
| COLUMNS_V2 |
| COMPACTION_QUEUE |
| COMPLETED_COMPACTIONS |
| COMPLETED_TXN_COMPONENTS |
| DATABASE_PARAMS |
| DBS |
| DB_PRIVS |
| DELEGATION_TOKENS |
| FUNCS |
| FUNC_RU |
| GLOBAL_PRIVS |
| HIVE_LOCKS |
| IDXS |
| INDEX_PARAMS |
| KEY_CONSTRAINTS |
| MASTER_KEYS |
| NEXT_COMPACTION_QUEUE_ID |
| NEXT_LOCK_ID |
| NEXT_TXN_ID |
| NOTIFICATION_LOG |
| NOTIFICATION_SEQUENCE |
| NUCLEUS_TABLES |
| PARTITIONS |
| PARTITION_EVENTS |
| PARTITION_KEYS |
| PARTITION_KEY_VALS |
| PARTITION_PARAMS |
| PART_COL_PRIVS |
| PART_COL_STATS |
| PART_PRIVS |
| ROLES |
| ROLE_MAP |
| SDS |
| SD_PARAMS |
| SEQUENCE_TABLE |
| SERDES |
| SERDE_PARAMS |
| SKEWED_COL_NAMES |
| SKEWED_COL_VALUE_LOC_MAP |
| SKEWED_STRING_LIST |
| SKEWED_STRING_LIST_VALUES |
| SKEWED_VALUES |
| SORT_COLS |
| TABLE_PARAMS |
| TAB_COL_STATS |
| TBLS |
| TBL_COL_PRIVS |
| TBL_PRIVS |
| TXNS |
| TXN_COMPONENTS |
| TYPES |
| TYPE_FIELDS |
| VERSION |
| WRITE_SET |
+---------------------------+
57 rows in set (0.00 sec)
3、启动并验证
[root@slave2 bin]# ./hive
'''''''''中间信息忽略''''''''''
hive>
4、Hive基本操作
(1)创建表
hive> create table testDB(id int, name string, age int);
OK
Time taken: 10.662 seconds
(2)查看表和数据
hive> show tables;
OK
customers
sample_07
sample_08
testdb
web_logs
Time taken: 0.228 seconds, Fetched: 5 row(s)
(3)删除表
hive> drop table if exists testdb;
OK
Time taken: 3.011 seconds
hive数据类型、存储格式以及HQL数据操作将在后续博客中陆续更新。