Hive数据库:嵌入、本地、远程全攻略(上)

Hive分布式数据仓库工具

关系型数据库

建立在关系模型之上的数据库称为关系型数据库(关系模型是由埃德加·科德于1970年提出的),关系型数据库借助集合代数等数学概念处理数据库中的数据。数据查询语言SOL是基于关系型数据库的语言,能够对关系型数据库中的数据进行检索和操作。关系模型由关系数据结构、关系操作集合、关系完整性约束3个部分组成。当前主流的关系型数据库有Oracle、SOL Server、Access.MySQL等。

图1-1 Hive图

关系数据库的瓶颈

(1)高并发读写需求

大型网站中用户的并发性会非常高,对于传统关系型数据库来说,硬盘I/O(读写操作)是一个很大的瓶颈。

海量数据的高效率读写

在信息时代飞速发展的情况下,而关系型数据库查询一张包含海量数据的表的效率是非常低的。

(2)高扩展和高可用性

在基于Web的结构中,数据库的横向扩展是非常困难的当其个应用系统的用户量和访问量剧增时,传统数据库无法添加更多的硬件或服冬节占来扩展其性能和负载能力。

Hive分布式数据仓库工具的概述

(1)Hive简介

Hive是基于 Hadoop的一个类关系型数据库的数据仓库工具,能够将结构化数据文件映射为数据库表并提供完整的查询功能。Hive定义了简单的类SQL查询语言HiveQL或HQL,它使熟悉 SQL的用户查询数据更加方便Hive的学习成本低,不需要专门开发mapReduce应用就可以通过类SQL语句快速实现 MapReduce的统计,能够对数据仓库进高效的数据统计分析。

(2)组件

服务端组件

Driver: 该组件包括Complier Optimizer 和Executor,能将用户编写的HQL语句进行编译解析、生成执行计划,然后调用MapReduce进行数据分析。

Metastore: 元数据服务组件,用来存储Hive元数据,因此Hive能够把Metastore服务分离并安装到远程集群,做到降低Hive服务与Metastore服务的耦合度,保证Hive运行

Thrift Server: Thrift是Facebook旗下的软件框架,能够进行跨语言服务的开发,Hive集成了该服务,支持不同语言调用Hive接口。

客户端组件

CLI:Command Line Interface,命令行接口。

Thrift客户端: Hive架构中多数客户端接口是建立在Thrift之上的,包括JDBC和ODBC接口

Web GUI: Hive提供了通过网页访问Hive服务的服务,对应Hive的HWI组件。

(3)Hive特性

Hive作为Hadoop的基础数询和分析。Hive提供了-系列数据提取、转化、加载的工具。Hive 定义了类SQL的查询数据仓库工具,可以对存储在Hadoop中的大规模数据进行查询HiveQL或HQL,它使熟悉SQL的用户查询数据更方便。同时,HiveQL允许开发者通过自定义Mapper和Reducer来完成自带Mapper和Reducer无法完成的分析工作

(4)应用场景

因为hive是基于Hadoop框架的仓库数据工具,Hadoop提交作业又有较大的时间延迟,导致hive不适合做低延迟的应用

(5)Hive中使用MySQL的原因

MySQL关系型数据库管理系统由瑞典MySQL AB公司开发,目前属于甲骨文公司旗下。Hive内部对MySQL提供了很好的支持并提供了类SQL查询语言(即HiveQL或HQL),它允许能够熟练使用SQL查询的用户对数据进行查询。同时也允许能够熟练使用MapReduce的开发者通过开发自定义Mapper和Reducer来处理内建的Mapper和Reducer MySQL支持FreeBSD、Linux、MAC、Windows等多种操作系统,Hive数据仓库工具借助MySQL数据库进行文件存储主要基于以下几点。

➢数据较为安全。

➢使用便捷。

➢多语言支持: MySQL为C、C++、Python、JAVA、Perl、PHP、Ruby等多种编程语言提供了API,访问和使用方便。

➢移植性好:MySQL 是跨平台的,安装简单小巧。

➢支持大量数据查询和存储:MySQL可以承受大量的并发访问。

(6)Hive数据仓库部署

Hive官网上介绍了Hive的3种安装方式,分别对应不同的应用场景。

(1)内嵌模式(元数据保村在内嵌的数据库derby种,允许一个会话链接,尝试多个会话链接时会报错),此模式连接到一个In-memory 的数据库Derby,一般用于Unit Test(单位测试)

(2)本地模式(本地安装mysql 替代derby存储元数据)

通过网络连接到一个数据库中,是最经常使用到的模式。

(3)远程模式(远程安装mysql 替代derby存储元数据)

远程服务器模式。用于非Java客户端访问元数据库,在服务器端启动MetaStoreServer,客户端利用Thrift协议通过MetaStoreServer访问元数据库

1.内嵌模式的安装与配置:
该模式下ConnectionURL指向hive内嵌数据库derby,在master下
(1)配置hive-site.xml:
vi  hive-site.xml 

<property>  
  <name>javax.jdo.option.ConnectionURL</name>  
  <value>jdbc:derby:;databaseName=metastore_db;create=true</value> 
</property>  
<property>  
  <name>javax.jdo.option.ConnectionDriverName</name>  
  <value>org.apache.derby.jdbc.EmbeddedDriver</value> 
</property>  
<property>  
  <name>hive.metastore.local</name>  
  <value>true</value> 
</property>   
<property>  
  <name>hive.metastore.warehouse.dir</name>  
  <value>/user/hive/warehouse</value>  
</property>  


末尾追加:

<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>

<property>
<name>hive.exec.local.scratchdir</name>
<value>/export/server/hive/data/${user.name}</value>
<description>Local scratch space for Hive jobs</description>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
<value>/home/hive/apache-hive-1.2.2-bin/tmp/${hive.session.id}_resources</value>
<description>Temporary local directory for added resources in the remote file system.</description>
</property>
<property>
<name>hive.server2.logging.operation.log.location</name>
<value>/home/hive/apache-hive-1.2.2-bin/tmp/root/operation_logs</value>
<description>Top level directory where operation logs are stored if logging functionality is enabled</description>
</property>

(2)配置环境变量:
vi /etc/profile:

export HIVE_HOME=/usr/hive/apache-hive-2.1.1-bin
export PATH=$PATH:$HIVE_HOME/bin


(3)配置hive-env.sh:
vi  hive-env.sh

HADOOP_HOME=/usr/hadoop/hadoop-2.7.3
export HIVE_CONF_DIR=/usr/hive/apache-hive-2.1.1-bin/conf
export HIVE_AUX_JARS_PATH=/usr/hive/apache-hive-2.1.1-bin/lib


(4)启动hadoop
cd /usr/hadoop//hadoop-2.7.3
sbin/start-all.sh
(5)启动元数据服务(或不需要)
bin/hive --service metastore
(6)初始化hive
schematool –initSchema –dbType derby

(7)启动hive
bin/hive

至此,内嵌模式已部署完成

关于本地模式和远程模式的安装与部署请看下期

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/311129.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

单摆波运动

1、简介 单摆波运动通常由15个单摆小球完成&#xff0c;每个小球的线长不一致&#xff0c;线长从一端至另一端依次增长。线长不一致会导致运动周期不一致&#xff0c;故而单摆波运动中的每个小球运动都不同&#xff0c;且能在规则与不规则运动间转换。单摆波运动如下所示&…

Qt QComboBox组合框控件

文章目录 1 属性和方法1.1 文本1.2 图标1.3 插入和删除1.4 信号和槽 2 实例2.1 布局2.2 代码实现 Qt中的组合框是集按钮和下拉列表体的控件&#xff0c;&#xff0c;它占用的屏幕空间很小&#xff0c;对应的类是QComboBox 1 属性和方法 QComboBox有很多属性&#xff0c;完整的…

力扣hot100 路径总和Ⅲ dfs 前缀和 一题双解 超全注释

Problem: 437. 路径总和 III 思路 树的遍历 DFS 一个朴素的做法是搜索以每个节点为根的&#xff08;往下的&#xff09;所有路径&#xff0c;并对路径总和为 targetSumtargetSumtargetSum 的路径进行累加统计。 使用 dfs1 来搜索所有节点&#xff0c;复杂度为 O(n)O(n)O(n)&am…

【计算机网络】TCP原理 | 可靠性机制分析(三)

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【网络编程】【Java系列】 本专栏旨在分享学习网络编程、计算机网络的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目…

数据结构第十二弹---堆的应用

堆的应用 1、堆排序2、TopK问题3、堆的相关习题总结 1、堆排序 要学习堆排序&#xff0c;首先要学习堆的向下调整算法&#xff0c;因为要用堆排序&#xff0c;你首先得建堆&#xff0c;而建堆需要执行多次堆的向下调整算法。 但是&#xff0c;使用向下调整算法需要满足一个前提…

全网最细RocketMQ源码一:NameSrv

一、入口 NameServer的启动源码在NameStartup&#xff0c;现在开始debug之旅 二、createNamesrcController public static NamesrvController createNamesrvController(String[] args) throws IOException, JoranException {System.setProperty(RemotingCommand.REMOTING_VER…

Java中多线程二

抢占调度模型 概述&#xff1a;优先让优先级高的线程使用 CPU &#xff0c;如果线程的优先级相同&#xff0c;那么随机会选择一个&#xff0c;优先级高的线程获取的 CPU 时间片相对多一些 Thread 类中一些关于线程的方法 方法简述public final int getPriority()返回此线程的优…

五、Java中SpringBoot组件集成接入【slf4j日志文档】

五、Java中SpringBoot组件集成接入【slf4j日志文档】 1.slf4j简介2.maven依赖3.配置4.使用5.展示6.参考文章 1.slf4j简介 SLF4J&#xff08;Simple Logging Facade for Java&#xff09;是一个为Java应用程序提供统一日志接口的日志门面框架。它旨在解决Java应用程序中日志系统…

居中面试问题

前端常问居中面试问题 css文本居中 文本水平居中 <div class"father"><div class"child"><div> <div>子类元素为行内元素&#xff0c;则给父类元素定义text-align:center 如果子元素是块元素&#xff0c;则给子元素定义margin&…

Vue3快速入门

文章目录 1. Vue3简介1.1. 【性能的提升】1.2. 源码的升级】1.3. 【拥抱TypeScript】1.4. 【新的特性】 2. 创建Vue3工程2.1. 【基于 vue-cli 创建】2.2. 【基于 vite 创建】(推荐)2.3. 【一个简单的效果】 3. Vue3核心语法3.1. 【OptionsAPI 与 CompositionAPI】Options API 的…

Linux系统——测试端口连通性方法

目录 一、TCP端口连通性测试 1、ssh 2、telnet&#xff08;可能需要安装&#xff09; 3、curl 4、tcping&#xff08;需要安装&#xff09; 5、nc&#xff08;需要安装&#xff09; 6、nmap&#xff08;需要安装&#xff09; 二、UDP端口连通性测试 1、nc&#xff08;…

85.乐理基础-记号篇-速度记号

内容来源于&#xff1a;三分钟音乐社 上一个内容&#xff1a;85.乐理基础-记号篇-力度记号-CSDN博客 速度记号在下方两个里面已经写过一部分了&#xff0c;这些标记总体上是属于 不变速度 的标记&#xff0c;比如一首乐谱就记了 每分钟60拍&#xff0c;那整首速度就都是不变的…

org.springframework.web.servlet.HandlerInterceptor

过期 1 配置黑名单 2 启动注册拦截 3 浏览器访问拦截

【Spring Cloud】Sentinel流量限流和熔断降级的讲解

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《Spring Cloud》。&#x1f3af;&#x1f3af; &am…

【SAP-PP】生产订单导入问题--完成日期向前推了一天

问题描述&#xff1a; 在执行BAPI_PRODORD_CREATE生产订单导入的时候&#xff0c;发现填写入模板中的基本完成日期是12月31日&#xff0c;但是到具体工单时变成了12月30日 截图说明&#xff1a; 感觉很神奇&#xff0c;咋一看&#xff0c;真的是日期提前了一天&#xff0c;de…

线性回归实例

1、线性回归&#xff08;linear Regression&#xff09;和逻辑回归&#xff08;logistic Regression&#xff09;的区别 线性回归主要是用来拟合数据&#xff0c;逻辑回归主要是用来区分数据&#xff0c;找到决策边界。 线性回归的代价函数常用平方误差函数&#xff0c;逻辑回…

函数指针和回调函数

文章目录 一.函数指针1.什么是函数指针2.函数指针的形式3.函数指针的用途。1.调用函数2.作为参数进行传递 二.函数指针数组三.回调函数 一.函数指针 1.什么是函数指针 函数指针是指向函数的指针。在C语言和C中&#xff0c;函数指针可以用来存储函数的地址&#xff0c;并且可以…

Kotlin程序设计(二)面向对象

Kotlin程序设计中级篇 我们在前面已经学习了Kotlin程序设计的基础篇&#xff0c;本章我们将继续介绍更多Kotlin特性&#xff0c;以及面向对象编程。 函数 其实函数我们在一开始就在使用了&#xff1a; fun main() {println("Hello World") }我们程序的入口点就是…

恒创科技:解决Windows服务器磁盘空间不足的问题

​  服务器硬盘的大小是决定空间是否充足的主要因素。但在日常使用中&#xff0c;服务器和网站备份会消耗大量存储空间&#xff0c;如果维护不当&#xff0c;最终将耗尽您的容量。同样&#xff0c;日志文件、临时文件和数据库可以在硬盘驱动器上或回收站中无休止地建立。当您…

windows10使用Shift+Win+S快捷键来截图

有时候电脑上没有打开微信QQ等软件&#xff0c;但是想使用一下截图&#xff0c;就很麻烦&#xff0c;还好windows10开始已经支持快捷键截图了&#xff1a; 打开截图工具并获取屏幕截图 - Microsoft 支持 快捷键&#xff1a;ShiftWinS 使用教程&#xff1a; 顺带说下系统这个自…