Hadoop学习之Hive学习指南
来源:互联网 发布:lol网络异常 编辑:程序博客网 时间:2024/05/16 10:50
- Hive介绍
- Hive安装
- Hive的技术架构
- Hive和关系型数据的区别
Hive介绍
- Hive是基于Hadoop的数据仓库工具,可以将结构化的数据文件映射成一张数据库表,并提供完整的sql查询功能,可以将SQL语句转换为MapReduce任务进行运行,其优点是学习成本低,可以通过SQL语句快速实现简单的MapReduce统计,不必开发新的MapReduce应用,十分适合数据仓库的统计分析。
- Hive是建立在Hadoop上的数据仓库基础架构。它提供了一系列的工具,可以用来对数据进行提取转换加载(ETL)。这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。Hive定义了简单的数据库查询语言,叫做HQL。它允许熟悉SQL的用户查询数据,同时这个语言也允许熟悉MapReduce的开发者开发自定义的Map和Reduce来处理内建的Map和Reduce无法完成的复杂的分析工作。
Hive的安装
- 官方文档提供两种下载Hive的方法,一种直接下载安装包,另外一种方式是下载源文件,并编译。这里我用的是第一种方法,简单方便,有兴趣学习源码的童鞋可以采用第二种方法。
- 下载完成之后,解压安装包,这里以apache-hive-2.1.0为例,并设置Hive的环境变量,即配置HIVE_HOME,确保HADOOP_HOME已经设置好(Linux系统下配置环境变量的方法就不在此累述了)。
然后在HDFS创建目录来保存数据。
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之前,首先要启动hdfs。
新版本的HiveServer2已经代替了之前的HiveServer2,现在我们用HiveServer2来启动hive。先用schematool工具来配置数据库schematool,如果使用mysql进行配置,拷贝MySQL驱动文件到hive的lib目录下,修改hive-site.xml文件如下
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/mysql?createDatabaseIfNotExist=
true</value>
<description>JDBC connect string for a JDBC metastore
</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
<description>username to use against metastore database
</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
</description>
</property>bin/schematool -dbType derby -initSchema或
bin/schematool -dbType mysql -initSchemaHiveServer2拥有自己的CLI叫做Beeline。使用Beeline运行Hive如下
bin/hiveserver2
bin/beeline -ujdbc:hive2://$HS2_HOST:$HS2_PORT
测试可用bin/beeline -u jdbc:hive2://
注意启动hive之前,先把HIVE_HOME下jdbc目录下的jar放到lib目录下。启动Hcatalogserver
$HIVE_HOME/hcatalog/sbin/hcat_server.sh
使用Hcatalog
$HIVE_HOME/hcatalog/bin/hcat
运行网页版
$HIVE_HOME/hcatalog/sbin/webhcat_server.sh
Hive的技术架构
首先我们来看一下架构图:
Hive架构包括以下组件:
1. Driver组件:该组件包括Complier、Optimizer和Executor,它们的作用是将我们写的HQL进行解析、编译优化、生成执行计划,然后调用底层的mapreduce计算框架。
2. MetaStore组件:元数据服务组件,Hive的元数据存储在关系型数据库里,Hive支持的关系型数据库有Derby、MySql。元数据对Hive非常重要,因此Hive支持把MetaStore服务独立出来,安装到远程的服务器集群里,从而解耦Hive服务和MetaStore服务,保证Hive运行的健壮性。
3. 解释器、编译器和优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成,生成的查询计划存储在HDFS中,并在随后由MapReduce调用执行。
4. Thrift服务组件:thrift是facebook开发的一个软件架构,它用来进行可扩展且跨语言的服务开发,Hive集成了该服务,能让不同的编程语言调用Hive接口。
5. CLI组件:command line interface命令行接口。
6. Thrift客户端组件:上面的架构图没有写Thrift客户端,但是Hive的许多客户端是建立在Thrift客户端基础上的,包括ODBC、JDBC接口。
7. WEBGUI组件:Hive提供了一种通过网页的方式访问Hive所提供的服务。这个接口对应Hive的hwi组件(Hive web interface),使用之前要启动hwi。
重点介绍一下MetaStore,MetaStore包括两个部分:MetaStore服务和后台数据的存储,后台数据存储的介质就是关系型数据库,例如Hive默认的嵌入式磁盘数据库是Derby,还有MySql。MetaStore服务是建立在后台数据介质之上,并且可以和Hive服务进行交互的服务组件,默认情况下,默认情况下MetaStore服务和Hive服务是安装在一起的,运行在同一个进程中,也可以把MetaStore服务剥离出来,独立安装在一个集群里,Hive远程调用MetaStore服务,这样我们就可以把元数据放到防火墙之后,客户端访问Hive服务,就可以连接到元数据这层,从而提供了更好的管理性和安全保障。使用远程MetaStore服务可以让Hive服务和MetaStore服务运行在不同的进程里,保障了Hive的稳定性以及以及提成了服务的效率。参考下图:
Hive和关系型数据库的区别
- Hive和关系型数据库存储的文件系统不同,Hive使用的是Hadoop的HDFS,关系型数据库则是服务器本地的文件系统。
- Hive使用的模型是MapReduce,而关系型数据库是自己设计的计算模型。
- 关系型数据库都是为实时查询的业务设计的,而Hive则是为海量数据进行数据挖据设计的,实时性很差。
- Hive很容易扩展自己的存储能力和计算能力,这个是继承Hadoop的,而关系型数据库就差很多。
- Hadoop学习之Hive学习指南
- Hadoop之hive学习
- Hadoop之hive学习
- Hadoop之hive学习
- hadoop学习之hive
- Hadoop之Hive学习
- Hadoop 之 hive 学习
- hive--基于Hadoop的数据仓库Hive 学习指南
- hadoop学习之--Hive笔记
- Hadoop学习笔记之Hive
- Hadoop之hive学习命令
- hadoop学习之-hive-数据模型
- Hadoop之hive学习_01
- Hadoop之hive学习_02
- Hadoop之hive学习_01
- Hadoop学习之Hive简介
- 基于Hadoop的数据仓库Hive 学习指南
- 基于Hadoop的数据仓库Hive 学习指南
- OpenSceneGraph实现的NeHe OpenGL教程 - 第八课
- 3.1.11 WM_PAINT消息
- 关于解决android studio各种疑难杂症系列---- gradle版本过高
- iOS开发 UI高级 SQLite数据库
- 计算文件的Hash值
- Hadoop学习之Hive学习指南
- OpenSceneGraph实现的NeHe OpenGL教程 - 第九课
- Objective-C类和对象
- 我们是怎么做Code Review的
- lua调用c模块
- 3.1.12 WM_DESTROY 消息
- OpenSceneGraph实现的NeHe OpenGL教程 - 第十课
- Android 查看服务service是否正在运行 列出正在运行的服务
- MyEcplise不能自动编译问题