The Apache Hive ™ data warehouse software facilitates reading, writing, and managing large datasets residing in distributed storage using SQL. Structure can be projected onto data already in storage. A command line tool and JDBC driver are provided to connect users to Hive.
翻译过来大意是:Apache Hive数据仓库软件促进了使用SQL读取、写入和管理分布存储中的大型数据集。结构可以投射到存储中已经存在的数据上。并提供了命令行工具和JDBC驱动程序来连接用户和Hive。
2. Hive的优缺点 2.1 优点提供类SQL 的查询方式HQL,将SQL 查询转换为MapReduce 的job 在Hadoop集群上执行
可以直接使用存储在Hadoop 文件系统中的数据
将元数据保存在关系数据库中,大大减少了在查询过程中执行语义检查的时间
延展性:内置大量用户函数UDF 来操作时间、字符串和其他的数据挖掘工具,支持用户扩展UDF 函数来完成内置函数无法实现的操作
容错性: 节点出现问题HQL仍可完成执行
扩展性: 为超大数据集设计了计算/扩展能力(MR作为计算引擎,HDFS作为存储系统)一般情况下不需要重启服务Hive可以自由的扩展集群的规模
2.2 缺点HQL的表达能力有限
(1)迭代式算法无法表达
(2)数据挖掘方面不擅长,由于MapReduce数据处理流程的限制,效率更高的算法却无法实现。
Hive的执行效率比较低
(1)Hive自动生成的MapReduce作业,通常情况下不够智能化
(2)Hive调优比较困难,粒度较粗
3. Hive安装与配置 3.1 环境准备Note: 在安装Hive之前,默认hadoop集群已经正常运行。Hive默认安装在NameNode节点上,不要在DataNode节点上安装。本文档安装的Hive版本基于2.3.7。
下载apache-hive-2.3.7-bin.tar.gz
[root@k8s-master ~]# cd /opt [root@k8s-master opt]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-2.3.7/apache-hive-2.3.7-bin.tar.gz解压后重命名,做软链接
[root@k8s-master opt]# tar -zxf apache-hive-2.3.7-bin.tar.gz [root@k8s-master opt]# mv apache-hive-2.3.7-bin hive-2.3.7 [root@k8s-master opt]# ln -s hive-2.3.7 hive修改环境变量
[root@k8s-master ~]# vim /root/.bash_profile #添加以下语句 export HIVE_HOME=http://www.likecs.com/opt/hive export HIVE_CONF_DIR=$HIVE_HOME/conf PATH=$HIVE_HOME/bin:$PATH [root@k8s-master ~]# source /root/.bash_profile确保mysql能正常运行,本文不介绍mysql的安装和启动说明。由于Hive默认使用内嵌的Derby数据库来存储它的元数据,但由于Derby数据库只支持单会话,所以使用Mysql作为它的外置存储引擎,方便多用户同时访问。
登录mysql数据库, 并创建metastore数据库,关闭新主库的只读属性,为其授权(用于存储hive的初始化配置)
mysql> create database metastore; mysql> set global read_only=0; mysql> grant all on metastore.* to hive@\'%\' identified by \'123456\'; mysql> grant all on metastore.* to hive@\'localhost\' identified by \'123456\'; mysql> flush privileges;PS: 如果忘记了mysql的登录密码,可以使用以下方法进行修改
[root@k8s-master ~]# vim /etc/my.cnf 在[mysqld]后面最后一行添加“skip-grant-tables”用来跳过密码验证的过程,如下所示 [mysqld] ...... log_bin=mysql-bin log_bin_index=mysql-bin.index binlog_format=row skip-grant-tables [root@k8s-master ~]# service mysqld restart接下来的操作:
[root@k8s-master ~]# mysql -u root -p 直接按enter键,便可以不用密码登录到数据库当中 mysql> update user set password=password("你的新密码") where user="root"; mysql> flush privileges; mysql> quit如果遇到以下问题:
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement解决方法:
mysql> flush privileges;继续执行修改密码操作
最后,使用vim /etc/my.cnf,去掉刚才添加的skip-grant-tables内容,然后重启MySQL即可。
下载连接mysql的jdbc connector的jar包
我这里选择的是5.1.47版本
下载
3.2 配置hive-env.sh # 操作之前,将配置文件重命名一下 [root@k8s-master ~]# cd /opt/hive/conf [root@k8s-master conf]# cp hive-default.xml.template hive-site.xml [root@k8s-master conf]# cp hive-env.sh.template hive-env.sh [root@k8s-master conf]# cp hive-log4j2.properties.template hive-log4j2.properties [root@k8s-master conf]# cp hive-exec-log4j2.properties.template hive-exec-log4j2.properties # 修改hive-env.sh文件 [root@k8s-master conf]# vim hive-env.sh # 放开以下内容 # Set HADOOP_HOME to point to a specific hadoop install directory export HADOOP_HOME=http://www.likecs.com/opt/hadoop # Hive Configuration Directory can be controlled by: export HIVE_CONF_DIR=http://www.likecs.com/opt/hive/conf # Folder containing extra libraries required for hive compilation/execution can be controlled by: export HIVE_AUX_JARS_PATH=http://www.likecs.com/opt/hive/lib export JAVA_HOME=http://www.likecs.com/opt/jdk1.8.0_161 export HIVE_HOME=http://www.likecs.com/opt/hive 3.3 在hdfs中创建以下目录,授权权限,用于存储文件 [root@k8s-master ~]# hadoop dfs -mkdir -p /user/hive/warehouse [root@k8s-master ~]# hadoop dfs -mkdir -p /user/hive/tmp [root@k8s-master ~]# hadoop dfs -mkdir -p /user/hive/log [root@k8s-master ~]# hadoop dfs -chmod -R 777 /user/hive/warehouse [root@k8s-master ~]# hadoop dfs -chmod -R 777 /user/hive/tmp [root@k8s-master ~]# hadoop dfs -chmod -R 777 /user/hive/log 3.4 配置hive-site.xml 3.4.1 创建本地临时目录