hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
一、hive安装
1、官网下载地址:http://hive.apache.org/downloads.html
下载后解压到指定目录,例如 /usr/local/hive
# tar -xvf apache-hive-2.0.0-bin.tar.gz ; mv apache-hive-2.0.0-bin /usr/local/hive
2、配置环境变量
# vim /etc/profile
export HIVE_HOME=/usr/local/hive/
export PATH=$HIVE_HOME/bin:$PATH
# source /etc/profile
3、创建Hive在HDFS中所需的目录
# cd /usr/local/hadoop/bin
# ./hadoop fs -mkdir /tmp
# ./hadoop fs -mkdir /user/hive/warehouse
# ./hadoop fs -chmod g+w /tmp
# ./hadoop fs -chmod g+w /user/hive/warehouse
二、配置hive
Hive配置文件介绍:
HADOOP_HOME=/usr/local/hadoop export HIVE_CONF_DIR=/usr/local/hive/conf export HIVE_HOME=/usr/local/hive export HADOOP_HEAPSIZE=2048
vim hive-site.xml 主要修改:连接字符串、驱动、用户名、密码等几处
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive/warehouse</value> </property> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://mysqlserver:3306/hive_data?createDatabaseIfNotExist=true</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>a367Nx52ixeorqmx5OaZ</value> </property> <property> <name>hive.metastore.local</name> <value>false</value> </property> <property> <name>hive.metastore.uris</name> <value>thrift://dataMaster30:9083</value> </property> <property> <name>hive.querylog.location</name> <value>/data/logs/hive/query</value> </property> </configuration>
hive日志默认放在/tmp/${user.name}目录下
可以通过配置 hive-log4j2.properties 来进行log相关的设置
property.hive.log.dir = ${sys:java.io.tmpdir}/${sys:user.name}
三、安装配置MySQL
use hive; //使用 hive 数据库库
show tables; //显示 hive 数据库中的数据表
select * from TBLS; //查看 hive 的元数据信息
<name>hive.metastore.uris</name>
<value>thrift://192.168.223.129:9083</value>
<description>运行hive的主机地址及端口(特别重要ip不要弄错)</description>
</property>
bin/hive --service metastore & (默认监听端口是:9083)
a.不启动metastore和hiveserver服务
直接命令行hive进入hive shell环境,然后执行show databases 报错如下:
ERROR ql.Driver: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient
b.第二种种情况
1.配置 hive.metastore.uris
2.启动metastore服务 hive --service metastore
然后直接命令行hive进入hive shell环境,然后执行show databases
c:第三种情况
1.注释配置项 hive.metastore.uris
2.不启动metastore服务
然后直接命令行hive进入hive shell环境,然后执行show databases