Hive

神马是Hive?

  Hive 是建立在 Hadoop 基础上数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL  查询语言,称为 QL ,它允许熟悉 SQL  的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper  和 reducer 来处理内建的 mapper 和 reducer  无法完成的复杂的分析工作。

  Hive 是 SQL解析引擎,它将SQL语句转译成Map/Reduce Job然后在Hadoop执行。Hive的表其实就是HDFS的目录,按表名把文件夹分开。如果是分区表,则分区值是子文件夹,可以直接在Map/Reduce Job里使用这些数据。

Hive的系统结构

  由上图可知,HDFS和Mapreduce是Hive架构的根基。Hive架构包括如下组件:CLI(command line interface)、JDBC/ODBC、Thrift Server、WEB GUI、metastore和Driver(Complier、Optimizer和Executor),这些组件可以分为两大类:服务端组件客户端组件

  (1)客户端组件:

  ①CLI:command line interface,命令行接口。

  ②Thrift客户端:上面的架构图里没有写上Thrift客户端,但是Hive架构的许多客户端接口是建立在Thrift客户端之上,包括JDBC和ODBC接口。

  ③WEBGUI:Hive客户端提供了一种通过网页的方式访问Hive所提供的服务。这个接口对应Hive的hwi组件(hive web interface),使用前要启动hwi服务。

  (2)服务端组件:

  Driver组件:该组件包括Complier、Optimizer和Executor,它的作用是将我们写的HiveQL(类SQL)语句进行解析、编译优化,生成执行计划,然后调用底层的mapreduce计算框架。

  ②Metastore组件:元数据服务组件,这个组件存储hive的元数据,hive的元数据存储在关系数据库里,hive支持的关系数据库有derby、mysql。元数据对于hive十分重要,因此hive支持把metastore服务独立出来,安装到远程的服务器集群里,从而解耦hive服务和metastore服务,保证hive运行的健壮性

  ③Thrift服务:Thrift是facebook开发的一个软件框架,它用来进行可扩展且跨语言的服务的开发,hive集成了该服务,能让不同的编程语言调用hive的接口。

  (3)底层根基:

Hive 的数据存储在 HDFS 中,大部分的查询由 MapReduce 完成(包含 * 的查询,比如 select * from table 不会生成 MapRedcue 任务)

mysql安装

安装mysql命令:yum install mysql-server -y  (-y参数作用为所有需要输入yes的地方默认yes)

打开mysql服务:service mysqld start

设置mysql服务开机自启动(也可以不设置,开机手动启动):chkconfig –add mysqld

进入mysql命令行:mysql -u root -p (root是账户不是必须root) 第一次进入不需要输密码可以直接:mysql命令进入mysql

设置mysql密码 mysqladmin -u root password root  也可以用下面的方法设置

mysql>use mysql;
mysql>set password =password('root');
mysql>flush privileges;

显示数据库: show databases;

使用数据库: use mysql;

显示表: show tables;

HIVE安装

可以从Apache官网下载安装文件,即 http://mirror.bit.edu.cn/apache/hive/

wget http://mirror.bit.edu.cn/apache/hive/hive-2.1.1/apache-hive-2.1.1-bin.tar.gz
tar –zxvf apache-hive-2.1.1-bin.tar.gz 
加入环境变量  

环境配置vi ~/.bashrc 

#HIVE
export HIVE_HOME=/usr/local/hadoop/apache-hive-2.1.1-bin
export PATH=$HIVE_HOME/bin:$PATH

生效环境配置source ~/.bashrc


修改default.xml.template和hive-env.sh.template文件的文件名为hive-site.xml和hive-env.sh。命令如下

cp hive-env.sh.template hive-env.sh 
cp hive-default.xml.template  hive-site.xml

修改vi hive-env.sh在 HADOOP_HOME 写成自己的hadoop目录

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

查看刚刚创建的目录 hdfs dfs -ls / 

将 hive-site.xml 文件中以下几个配置项的值设置成上一步中创建的几个路径

<property>
    <name>hive.exec.scratchdir</name>
    <value>/user/hive/tmp</value>
</property>
<property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>
</property>
<property>
    <name>hive.querylog.location</name>
    <value>/user/hive/log</value>
</property>

需要在 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>root</value>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>root</value>
  </property>

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>root</value>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>root</value>
  </property>

创建tmp文件

mkdir /usr/local/hadoop/apache-hive-2.1.1-bin/tmp  

在配置文件 hive-site.xml 里面

把{system:java.io.tmpdir} 改成/usr/local/hadoop/apache-hive-2.1.1-bin/tmp
把{system:user.name} 改成{user.name} 
%s#${system:java.io.tmpdir}#/usr/local/hadoop/apache-hive-2.1.1-bin/tmp#g
%s#${system:user.name}#{user.name}#g

配置jdbc驱动包 

把mysql-connector-java.5.1.30-bin.jar放入&HIVE_HOME/lib目录下

初始化hive 

从 Hive 2.1 版本开始, 我们需要先运行 schematool 命令来执行初始化操作。

schematool -dbType mysql -initSchema

看到schemaTool completed 则初始化完成 

检测hive 是否成功 直接在命令行输入hive即可

hive

测试hive是否可以正确使用

创建测试表dep

     

通过Mysql查看创建的表

      

通过UI页面查看创建的数据位

        访问 xxx.xxx.xxx.xxx:50070

        


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值