HDFS 分布式存储 spark storm HBase

HDFS 分布式存储 spark storm HBase

分布式结构 master slave

name node client 负责文件的拆分 128MB 3份

data node

MapReduce 分布式计算 离线计算 2.X之前 速度比较慢 对比spark

编程思想 Map 分 Reduce 合

hadoop streaming Mrjob

Yarn 资源管理 cpu 内存 MapReduce spark 分布式计算

RM NM AM

社区版 CDH

什么是Hive

  • 基于Hadoop 数据保存到HDFS

  • 数据仓库工具

  • 结构化的数据 映射为一张数据库表

    01,张三,89

    02,李四,91

    03,赵武,92

  • HQL查询功能 (Hive SQL)

  • 本质 把HQL翻译成MapReduce 降低使用hadoop计算的门槛

  • 离线数据分析开发效率比直接用MapReduce 高

Hive架构

  • 用户接口:shell命令行
  • 元数据存储
    • 数据库 表 都保存到那些位置上
    • 表中的字段名字 类型
    • mysql derby(自带)
  • Drive
    • 负责把HQL翻译成mapreduce
    • 或者翻译成 shell 命令

Hive和Hadoop关系

  • 利用hdfs存数据 利用mr算
  • Hive只需要跟 Master节点打交道 不需要集群

Hive和关系型数据库区别

  • hive 离线计算 海量查询
  • hive最主要做查询 不涉及删除修改 默认不支持删除修改,默认不支持事务,并不完全支持标准sql
  • sql CRUD全部支持, 支撑在线业务,索引完整 支持事务

Hive 基本使用

  • 创建表
CREATE TABLE student(classNo string, stuNo string, score int) row format delimited fields terminated by ',';
  • 字段不需要指定占多少字节

  • 需要通过row format delimited fields terminated by ','指定列的分隔符

  • 加载表数据的时候尽量使用 load data方式 把整个文件put上去

    load data local inpath '/home/hadoop/tmp/student.txt'overwrite into table student;
    
  • 内部表和外部表

    • managed table

      • 创建表的时候

        CREATE TABLE 表名(字段名 字段类型,)row format delimited fields terminated by ','
        
      • 删除表

        元数据和数据一起删除

      • 数据位置

        • 默认是/user/hive/warehouse
    • external table

      • 建表语句

        CREATE External TABLE 表名(字段名 字段类型,)row format delimited fields terminated by ',' location '数据在hdfs上的路径';
        
      • 删除表

        • 只删除元数据 数据会保留
      • 数据可以在hdfs上的任意位置

  • 分区表

    • 当数据量比较大的时候,使用分区表可以缩小查询的数据范围

    • 分区表实际上就是在表的目录下创建的子目录

    • 如果有分区表的话查询的时候,尽量要使用分区字段

    • 创建分区表的语句

      create table 表名 (字段名,字段类型....) partitioned by (分区字段名 分区字段类型) row format delimited fields terminated by ',' lines terminated by '\n' stored as textfile;
      
    • 向分区表中插入数据

      load data local inpath '/home/hadoop/tmp/employee.txt' into table 表名 partition(分区字段名字='分区的具体值');
      
    • 添加分区

      alter table 表名 add if not exists partition(分区字段名字='分区的具体值');
      
    • 动态分区

      • 插入数据的时候指定分区的字段,会自动帮助创建分区所对应的文件夹

      • 需要关掉默认设置

        set hive.exec.dynamic.partition.mode=nonstrict;
        

UDF自定义函数

  • hive提供的函数不能满足需求的时候就可以使用自定函数

    • 使用别人已经编译好的.jar

      • jar加到 hive环境中

      • jar 可以在hdfs上 也可是在centos 上

      • 创建一个临时函数

        CREATE TEMPORARY FUNCTION 自定义函数名字 as '自定义函数在jar包中的包名'
        
      • 创建一个永久函数

        CREATE FUNCTION 自定义函数名字 as '自定义函数在jar包中的包名' using jar 'jar位置';
        
    • 自己写python脚本实现udf、udaf

      • add file python文件的位置

      • SELECT TRANSFORM(fname, lname) USING 'python udf1.py' AS (fname, l_name) FROM u;
        

综合案例

  • collect_set/collect_list

    • group by之后 针对某一列聚合 结果放到[]
    • 区别 一个去重 一个不去重
  • lateral view explode

    • explode函数 把复杂数据类型 array map 拆开 一行变多行

    • lateral view 和explode函数 配合使用 创建虚拟视图 可以把explode的结果和其它列一起查询

    • select article_id,kw from articles
      lateral view outer explode(key_words) t as kw
      
  • CONCAT, CONCAT_WS

    • 不同列的字符串拼接到一起
    • concat_ws 可以把array中的元素拼接到同一个字符串中 指定分割符
  • str_to_map 把具有key:value形式的字符串转换成map

sqoop 介绍

  • 作用 数据交换工具 可以实现 数据在mysql oracle<==> hdfs之间互相传递

  • 原理 通过写sqoop 命令 把sqoop命令翻译成mapreduce 通过mapreduce连接各种数据源 实现数据的传递

  • 通过sqoop 把数据从mysql导入到hdfs

    • sqoop import --connect jdbc:mysql://mysql数据库地址:3306/数据库名字 --username root --password password --table 要导出数据的表名 -m mrjob的数量
    • 默认会把文件导入到 hdfs上 /user/linux用户名 文件夹下
    • 通过 --target-dir指定其它位置

HBase介绍

  • 分布式开源数据库

  • 面向列

  • Big Table开源实现

  • 适合非结构化数据的存储

  • PB级别数据

  • 可以支撑在线业务

  • 分布式系统特点 :易于扩展,支持动态伸缩,并发数据处理

面向列数据库

  • 关系型数据库:行式存储 每一行数据都是连续的 所有的记录都放到一个连续的存储空间中

  • 列数据库: 列式存储 每一列对应一个文件 不同列并不对应连续的存储空间

  • 结构化数据 V.S. 非结构化数据

    • 结构化数据
      • 预定义的数据模型 模型一旦确定不会经常变化(表结构不会频繁调整)
    • 非结构化数据
      • 没有预定义数据模型
      • 模型不规则 不完整
      • 文本 图片 视频 音频
  • Hive 和 Hbase区别

    • hive hbase 共同点
      • 都可以处理海量数据
      • 文件都是保存到hdfs上
    • hive 和 hbase不同
      • 计算不是通过mapreduce实现的 自己实现的CRUD功能
      • hive 通过mapreduce实现 数据查询的
      • hbase 可以有集群 集群的管理是通过zookeeper实现
      • hive 只能做离线计算
      • hbase 提供对数据的随机实时读/写访问功能
  • HBase 对事务的支持 只支持行级别的事务

  • CAP定理

    • 分区容错性 分布式系统都要有的特性,任何时候都要能提供服务 P保证
    • HBase CP系统 强一致性

Hbase 数据模型

  • NameSpace 对应 关系型数据库 database
  • 表(table):用于存储管理数据,具有稀疏的、面向列的特点。
  • 行 (row): 每一行都对应一个row key 行键 Hbase有索引但是只是在行键 rowkey有索引
  • 列 Column family 和 Column qualifier 组成
  • 列族(ColumnFamily)保存的就是 键值对集合 key:value
  • 时间戳(TimeStamp):是列的一个属性

Hbase 和 传统关系型数据库区别

  • 创建HBase表的时候只需要指定表名 和 列族

  • 每一个行当中 只需要列族相同就可以了 至于每个列族中的 key:value对 key可以完全不同

HBase基础架构

  • Client

  • Zookeeper

    • 保证HMaster有一个活着
    • HRegionServer HMaster地址存储
    • 监控Region Server状态 将Region Server信息通知HMaster
    • 元数据存储
  • HMaster

  • HRegionServer

  • HStore

    • 每一个column family 对应了一个HStore
  • HRegion

  • HLog

面向列数据库 列式存储

适合存非关系型数据

hbase 创建表的过程很简单 只需要指定表名和列族的名字就可以了

create ‘表名’,‘列族名字’

NameSpace -》数据库

table

row-key 行键 hbase的索引只在 row-key才有

column family 列族 key:value 这里面key 又叫 column quanlifier

不同行的 相同的column family 中 column quanlifier可以完全不同

组件

  • HMaster

  • HRegionServer

    • HRegion
      • Hstore (一个列族对应)
        • memstore
        • storefile

如果遇到 hdfs safe mode

通过 hdfs dfsadmin -safemode leave

hive 一定要先启动元数据服务

  • hive --service metastore&

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NoSQL———Redis配置与优化

目录 一、关系数据库与非关系型数据库 1.1 关系型数据库 1.2 非关系型数据库 1.3 关系型数据库和非关系型数据库区别 1.3.1 非关系型数据库产生背景 二、Redis简介 2.1 redis优点&#xff1a; 三、Redis 安装部署 四、Redis 命令工具 4.1 redis-cli 命令行工具 …

vue3代码编辑器组件codemirror-editor-vue3

官方文档&#xff1a;https://github.com/RennCheung/codemirror-editor-vue3 国内镜像&#xff1a;https://renncheung.github.io/codemirror-editor-vue3/zh-CN/guide/getting-started 1.安装 npm install codemirror-editor-vue3 codemirror5.x -S2.代码示例 <templat…

mybatis框架遇到的问题:All elements are null

今天在做一个查询接口&#xff0c;应用场景是统计选择日期范围内的每日数据量&#xff0c;于是便想到了使用count&#xff08;&#xff09;函数来统计总行数来代表数据量&#xff0c;并且以记录时间的字段来作为分组标准&#xff08;group by&#xff09;&#xff0c;大体思路有…

基于ssm+mysql+jsp高校疫情防控出入信息管理系统

基于ssmmysqljsp高校疫情防控出入信息管理系统 一、系统介绍二、功能展示1.登陆2.教师管理3.学生管理4.打卡记录管理5.学生申请通行证6.通行证管理7.留言信息管理8.公告类型管理9.公告管理 四、获取源码 一、系统介绍 学生 : 个人中心、打卡记录管理、学生申请通行证、通行证管…

Delphi XE的原生JSONObject如何判断键值是否存在?

【问题现象】 Delphi XE的原生JSONObject&#xff0c;取出键值的时候如下&#xff1a; //json是传入的参数&#xff0c;里面包括"food_name"等之类的键值&#xff0c;没有food_type键值 procedure XXXXFunciton(json:TJSONObject) var strFoodName,strFoodType:S…

<C++> STL_string

目录 1.string类 2.string类的接口 2.1 成员函数 2.1.1 string构造函数 2.1.2 string赋值运算 2.1.3 string析构函数 2.2 string对象访问以及迭代器 2.2.1 string的遍历方式 2.2.2 迭代器的使用 2.2.3 const_迭代器的使用 2.2.4 at 2.2.5 back和front 2.3 string容…

Docker基础命令(一)

Docker使用1 一、运行终端 打开终端&#xff0c;输入docker images &#xff0c;如果运行正常&#xff0c;表示docker已经可以在本电脑上使用了 二、docker常用命令 指令说明docker images查看已下载的镜像docker rmi 镜像名称:标签名删除已下载的镜像docker search 镜像从官…

ffmpeg 的帮助系统

----------------------------------------------- author: hjjdebug date: 2023年 07月 31日 星期一 14:32:15 CST ffmpeg 的帮助系统 目的: 搞清楚它都打印了什么? 它是怎样实现的. ----------------------------------------------- $ffprobe -h 1996行输出 $ffmpeg -h…

Java如何实现将类文件打包为jar包

目录 将类文件打包为jar包 1.写类文件2.编译3.测试4.打jar包jar包应该怎么打&#xff1f; 1.首先确保你的项目2.选中你的项目,点右键3.选择runnable jar file4.如下图,直接看图5.然后点finish 将类文件打包为jar包 为实际项目写了一个工具类&#xff0c;但是每次使用时都需要…

xcode中如何显示文件后缀

xcode14.3 用不惯mac电脑真恶心&#xff0c;改个显示文件后缀找半天 1、首先双击打开xcode软件 2、此时&#xff0c;电脑左上角出现xcode字样(左上角如果看不到xcode字样&#xff0c;再次点击xcode软件弹出来就有了)&#xff0c;鼠标右键它&#xff0c;点击setting或者Prefere…

阿里云SLB负载均衡ALB、CLB和NLB有什么区别?

阿里云负载均衡SLB分为传统型负载均衡CLB&#xff08;原SLB&#xff09;、应用型负载均衡ALB和网络型负载均衡NLB&#xff0c;三者有什么区别&#xff1f;CLB是之前的传统的SLB&#xff0c;基于物理机架构的4层负载均衡&#xff1b;ALB是应用型负载均衡&#xff0c;7层负载均衡…

安卓音视频多对多级联转发渲染

最近利用自己以前学习和用到的音视频知识和工程技能做了一个android的sdk,实现了本地流媒体ipc rtsp 拉流以及自带mip usb等camera audio节点产生的流媒体通过webrtc sfu的方式进行多对多级联发布共享,网状结构&#xff0c;p2p组网&#xff0c;支持实时渲染以及转推rtmp&#x…

我的第一个前端(VS code ,Node , lite-server简易服务器,npm 运行)

第一种方式&#xff1a;使用Visual Studio Code创建并运行 第一个前端项目的步骤&#xff0c;如下&#xff1a; 1. 下载和安装Visual Studio Code&#xff1a; 访问Visual Studio Code官方网站&#xff08;Visual Studio Code - Code Editing. Redefined&#xff09;并根据你…

Java类的加载过程是什么?

本文重点 本文将学习类的加载过程,java命令将class文件放到类加载器中,那么之后经历了什么?本文将对其进行学习。 类加载方式? 两种加载方式:隐式加载(静态加载)和显式加载(动态加载) 隐式加载指的是在程序使用new等方式创建对象的时候,会隐式地调用类的加载器把…

【Docker】Docker的优势、与虚拟机技术的区别、三个重要概念和架构及工作原理详细讲解

前言 Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 作者简介&#xff1a; 辭七七&#xf…

GDAL C++ API 学习之路 OGRGeometry 环类 OGRLinearRing

OGRLinearRing class <ogrsf_frmts.h> OGRLinearRing 是 OGR 库中的一个类&#xff0c;它是一个线性环&#xff08;Linear Ring&#xff09;的几何对象&#xff0c;用于表示封闭的线性路径。线性环是由一系列连续的线段组成&#xff0c;首尾相连形成闭合的环。线…

驶向专业:嵌入式开发在自动驾驶中的学习之道

导语: 自动驾驶技术在汽车行业中的快速发展为嵌入式开发领域带来了巨大的机遇。作为自动驾驶的核心组成部分&#xff0c;嵌入式开发在驱动汽车的智能化和自主性方面发挥着至关重要的作用。本文将探讨嵌入式开发的学习方向、途径以及未来在自动驾驶领域中的展望。 一、学习方向:…

Java 解析Excel单元格的富文本

1. 总体介绍 该方法是解析 xlsx 单元格中的富文本&#xff0c;注意不是 xls&#xff0c;xls 的 api 不一样&#xff0c;试了很久没成功。只实现了解析 斜体字、上下标&#xff0c;其它的实现方式应该类似。 2. 具体实现 2.1 代码 package util;import java.io.FileInputStr…

人工智能安全-3-噪声数据处理

0 提纲 噪声相关概述噪声处理的理论与方法基于数据清洗的噪声过滤主动式过滤噪声鲁棒模型1 噪声相关概述 噪声类型: 属性噪声:样本中某个属性的值存在噪声标签噪声:样本归属类别关于噪声分布的假设:均匀分布、高斯分布、泊松分布等。 标签噪声的产生原因: (1)特定类别…

[SQL挖掘机] - 窗口函数 - dense_rank

介绍: dense_rank() 是一种常用的窗口函数&#xff0c;它为结果集中的每一行分配一个密集排名&#xff08;dense rank&#xff09;。这个密集排名基于指定的排序顺序&#xff0c;并且在遇到相同的值时&#xff0c;不会跳过排名。 用法: dense_rank() 函数的语法如下&#xf…