简介
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
Hive 构建在基于静态批处理的Hadoop 之上,Hadoop 通常都有较高的延迟并且在作业提交和调度的时候需要大量的开销。因此,Hive 并不能够在大规模数据集上实现低延迟快速的查询,例如,Hive 在几百MB 的数据集上执行查询一般有分钟级的时间延迟。
因此,Hive 并不适合那些需要低延迟的应用,例如,联机事务处理(OLTP)。Hive 查询操作过程严格遵守Hadoop MapReduce 的作业执行模型,Hive 将用户的HiveQL 语句通过解释器转换为MapReduce 作业提交到Hadoop 集群上,Hadoop 监控作业执行过程,然后返回作业执行结果给用户。Hive 并非为联机事务处理而设计,Hive 并不提供实时的查询和基于行级的数据更新操作。Hive 的最佳使用场合是大数据集的批处理作业,例如,网络日志分析。
一 安装MySql
官网下载mysql-server(yum安装)
wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
解压
rpm -ivh mysql-community-release-el7-5.noarch.rpm
1
安装
yum install mysql-community-server
重启mysql服务:
service mysqld restart
进入mysql
mysql -u root
为root用户设置密码
mysql> set password for 'root'@'localhost' =password('root');
远程连接设置:
把在所有数据库的所有表的所有权限赋值给位于所有IP地址的root用户:
mysql> grant all privileges on *.* to root@' %'identified by 'root';
mysql>flush privileges;
刷新权限
如果是新用户而不是root,则要先新建用户:
mysql>create user 'username'@' %' identified by 'password';
Hive的安装配置
/
通过wget下载hive-2.3.5
wget http://mirror.bit.edu.cn/apache/hive/hive-2.3.5/apache-hive-2.3.5-bin.tar.gz
将hive解压到/usr/local
tar -zxvf apache-hive-2.3.5-bin.tar.gz -C /usr/local/
将文件重命名为hive文件:
mv apache-hive-2.3.5-bin hive
在 vi /etc/profile末尾加
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
source /etc.profile
hive --version
有hive的版本显现,安装成功!
cp hive-env.sh.template hive-env.sh
修改Hadoop的安装路径
HADOOP_HOME=/opt/module /hadoop-2.3.5
修改Hive的conf目录的路径
export HIVE_CONF_DIR=/usr/local/hive/conf
配置hive-site.xml
cp hive- default.xml.template hive-site.xml
<property>
<!-- 元数据库的链接地址 mysql -->
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://bigdata131:3306/hivedb?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<!-- 指定mysql驱动 -->
<!-- mysql5的驱动是com.mysql.jdbc.Driver,mysql6以后的是com.mysql.cj.jdbc.Driver。 -->
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<!-- 指定mysql用户名 -->
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>
<property>
<!-- 指定mysql密码 请输入自己的MySQL连接密码 -->
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
<description>password to use against metastore database</description>
</property>
启动hive
启动Hadoop
初始化Metastore架构:schematool -dbType mysql -initSchema
启动Hive:hive
Hive实现WordCount
建数据源文件并上传到hdfs的/user/input目录下
建数据源表t1:create table t1 (line string)
装载数据:load data inpath ‘/user/input’ overwrite into table t1;
编写HiveQL语句实现wordcount算法,建表wct1保存计算结果:
create table ct1 as select word, count(1) as count from (select explode (split (line, ' ')) as word from t1) w group by word order by word;
查看wordcount计算结果:
select * from ct1