Spark、RDD、Hive 、Hadoop-Hive 和传统关系型数据库区别

news2024/11/5 10:04:06
  • Hive Hadoop

  • Hive 和传统关系型数据库区别

Spark 概念

  • 基于内存的分布式计算框架

  • 只负责算 不负责存

  • spark 在离线计算 功能上 类似于mapreduce的作用

  • MapReduce的缺点

    • 运行速度慢 (没有充分利用内存)
    • 接口比较简单,仅支持Map Reduce
    • 功能比较单一 只能做离线计算
  • Spark优势

    • 运行速度快
    • 自身生态比较完整
      • spark sql
      • spark streaming
      • spark mllib Spark ML
    • api 比较丰富
    • 使用各种语言进行操作

RDD 的概念

  • 弹性分布式数据集

  • spark当中对数据的抽象

  • 所有spark中对数据的操作最终都会转换成RDD的操作

    • spark sql
    • spark streaming
    • spark ml 、spark mllib
  • RDD 分布式的 可容错 可以进行并行计算

  • rdd 的存储可以对比HDFS

    • hdfs 数据拆分成多个block rdd 拆分成多个partition
    • 读取的时候 spark 加载hdfs数据 1个block 对应 spark rdd的一个partition
    • 写数据的时候 spark 1个partition 可能对应多个block
  • RDD是不可变的

    • 父RDD 生成一个子 RDD 父RDD的状态不会变化
    • 从容错的角度去做这样的设计

RDD的创建

  • 创建RDD之前先要有spark context

    conf = SparkConf().setAppName(appName).setMaster(master)
    sc = SparkContext(conf=conf)
    
  • 通过内存中的数据创建RDD

    • data = [1, 2, 3, 4, 5]
      distData = sc.parallelize(data)
  • 创建RDD时可以指定 partition的数量(RDD会分成几份)一个partition会对应一个task,根据CPU的内核数来指定partition (1核对应2~4个partition)

  • 从文件创建RDD 可以是HDFS支持的任何一种存储介质

    • 可以从 hdfs 数据库(mysql) 本地文件系统 hbase 这些地方加载数据创建RDD
    • rdd = sc.textFile(‘file:///root/tmp/test.txt’)

RDD的三类算子

  • transformation
    • 所有的transformation 都是延迟执行的,只要不调用action 不会执行,只是记录过程
    • transformation 这一类算子返回值还是 rdd
    • rdd.transformation 还会得到新的rdd
  • action
    • 会触发之前的rdd所有的transformation
    • 获取最终的结果
  • persist
    • 数据存储,可以存到内存,也可以是磁盘

通过pycharm 链接centos环境

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cOhcErxh-1691130443341)(1555730758534.png)]

在这里插入图片描述
在这里插入图片描述

ip地址统计案例

  • 广播变量

    • 如果多个task会用到同一份数据,默认每个task都会复制一份

    • 用到的数据如果只是查询可以通过广播变量保存,避免数据的反复复制

    • SparkContext可以创建广播变量

      广播变量= sc.broadcast()
      广播变量。value
      
  • mapPartitions

    • transformation操作
    • 类似map 但是map是一条一条传给里面函数的 mapPartitions 数据是一部分一部分传给函数的
    • 应用场景 数据处理的时候 需要连接其它资源 如果一条一条处理 会处理一条连一次, 一份一份处理可以很多条数据连一次其它资源 可以提高效率
  • 二分法查找

  • ip_transform 把223.243.0.0 转换成10进制的数字

spark standalone模式

  • Master

    • 主节点
    • 负责Worker状态管理
    • 响应client 提交来的Application
  • Worker

    • 管理自身资源
    • 运行Application对应的task
    • 启动图driver 执行application
  • Executor

    • task 最终执行的容器
  • Application

    • spark作业
  • Driver

    • 作业提交给spark的时候 先由一个Worker启动一个Driver来分析Application
    • DAGScheduler
      • task划分 交给TaskScheduler
      • 作业可以划分为多个stage
      • 每一个stage根据partition的数量决定由多少个task
    • TaskScheduler
      • 将task调度到对应的Executor上执行
  • Client

spark core总结

  • spark core是 spark生态最核心的部分

  • spark 生态

    • spark core mapreduce
    • spark sql 类似于hive
    • spark streaming storm、flink
    • spark ML 基于dataframe sparkmllib rdd
  • spark

    • 基于内存的 分布式计算框架
  • MapReduce 和 spark 优劣

    • spark 基于内存 算快
    • spark api 更丰富 比mapreduce 代码少
    • spark 生态完整
      • 离线计算 spark core spark sql
      • 实时计算/流式计算 spark streaming 准实时
      • 交互式计算 spark sql dataframe
      • 机器学习 spark ML
  • RDD

    • 弹性分布式数据集
    • 不可变 rdd->rdd2 rdd和rdd2的状态会分别保存
    • 弹性 存储弹性 分布式弹性 容错可以分多个partition存 每个partition有多个副本
    • 分布式
    • 并行计算
  • RDD创建

    • spark context
      • 在内存中 list iterable
      • 从文件中加载
      • 在创建rdd的时候可以指定partitons的数量 一个partition对应一个task
  • 三类算子

    • transformation
      • 返回rdd
      • 延迟执行 只要没调用action类算子 就不会执行 只是几下了执行计划
    • action
      • 获取结果
  • spark local模式 standalone

  • 广播变量

Hbase 回顾

  • 面向列 列式存储
    • 每一列数据是放到同一个文件中的, 列与列之间存储的位置并不连续
    • 数据是一行一行存的,每一行都是连续的
  • 非关系型数据 NoSQL
    • 关系型数据 非关系数据
  • 事务
    • 行级别事务 不是事务型数据库
  • CAP定理 CP系统
  • 行键(RowKey) 只有rowkey有索引
  • 列族(ColumnFamily) k:v数据库 查询性能类似的 k:v 放到同一个ColumnFamily中
  • 列修饰符(Column Qualifier) 在ColumnFamily下的 key:value对的key ColumnFamily:Column Qualifier:value

HBase表设计需要注意的问题

  • HBase的特点
    • 行级别事务, 如果对跨行事务,跨表事务有很高要求不适合用hbase
    • rowkey有索引
    • ColumnFamily 不宜过多
    • Column Qualifier可以用来存储信息
  • Rowkey是HBase表结构设计中很重要的环节, 直接影响到HBase的效率和性能
  • HBase的表结构比传统关系型数据库更灵活, 能存储任何二进制数据,无需考虑数据类型
  • 利用列标识(Column Qualifier)来存储数据
  • 衡量设计好坏的简单标准 是否会全表查询

HBase shell操作

Happybase 操作hbase

Hbase 需要调整的地方

①删除hadoop 上 /hbase目录

②修改 /root/bigdata/hbase/conf/regionservers

​ 只保留hadoop_master

③修改hbase-site.xml

<configuration>
        <property>
                <name>hbase.rootdir</name>
                <value>hdfs://hadoop-master:9000/hbase</value>
        </property>
        <property>
                <name>hbase.cluster.distributed</name>
                <value>true</value>
        </property>
        <property>
                <name>hbase.zookeeper.property.clientPort</name>
                <value>只保留之前的第一个值</value>
        </property>

        <property>
                <name>hbase.zookeeper.property.dataDir</name>
                <value>保留之前的内容</value>
        </property>
        <property>
                <name>hbase.unsafe.stream.capability.enforce</name>
                <value>false</value>
        </property>
</configuration>

④start-hbase.sh 启动hbase

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

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

相关文章

AI写作宝有哪些,分享两种AI写作工具

AI写作宝是一种基于人工智能技术的写作辅助工具。它可以根据用户输入的关键词和主题快速生成文章。AI写作宝可以为用户节省大量的时间和精力&#xff0c;帮助用户快速生成高质量的文章。今天就为大家推荐两款AI写作宝&#xff1a; 一、AI创作家 AI创作家是一款基于人工智能技…

在java中存储对象到redis出现类型转换异常的解决方法

**出现的问题,**此时的redisCatch已经注入 原因:这里传进来的是一个对象,redis不能直接将对象存到String中,必须将对象进行序列化转成json字符串再存储,其次.传进来的对象不能是null 再重新启动就行了

整会promise这8个高级用法,再被问倒来喷我

前端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 发现很多人还只会promise常规用法 在js项目中&#xff0c;promise的使用应该是必不可少的&#xff0c;但我发现在同事和面试者中&#xff0c;很多中级或…

GD32F103VE睡眠与唤醒

GD32F103VE睡眠与唤醒&#xff0c;兆易官网给的程序没有测试。等测试后&#xff0c;才发现有问题。 现修改&#xff0c;测试如下&#xff1a; #include "SleepMode.h" #include "delay.h"u8 WFE_CMD_EnterSleepModeFlag;void Enter_DeepSleepMode(void);…

关于计算机大学生秋招面试的那点事?(Golang篇)

前言&#xff1b; Go语言&#xff08;简称Golang&#xff09;越来越受到开发者的关注和欢迎。它由Google公司于2009年推出&#xff0c;旨在提供更好的性能和并发性能。眼下&#xff0c;越来越多的公司在使用它&#xff0c;比如著名的云计算服务商AWS&#xff0c;以及知名电商京…

【2023.8】docker一键部署wvp-GB28181-pro和ZLMediaKit过程全记录

安装docker 使用的操作系统是ubuntu20.04 如何在 Ubuntu 20.04 上安装和使用 Docker https://developer.aliyun.com/article/762674 docker拉取配置好的ZLMediaKIt和wvp-GB28181-pro docker pull 648540858/wvp_pro第一次运行 docker一键运行ZLMediaKIt和wvp-GB28181-pro …

Springboot集成支付宝微信支付项目

找了一个支付宝微信小项目&#xff0c;有兴趣有的大家可以学习一下 后端&#xff1a;shiringbootmybatis-plusswagger2alipaywxpay 前端VUE 先看首页 目前微信支付还没有对接&#xff0c;但是方法和配置文件已经有了&#xff0c;只需按照自己配置就可以了。 点击在支付宝支付 输…

Cpp学习——string(1)

目录 ​编辑 一&#xff0c;string简介 二&#xff0c;string的使用 1.string对象的构造方式 2.string的遍历 1.for普通遍历 2.迭代器的方式遍历 3.string中的函数 一&#xff0c;string简介 要学习string就要先知道string是个啥。string是个啥呢&#xff1f;string其实…

RISC-V基础之函数调用(五)函数递归调用及函数参数数量溢出(超出现有寄存器个数)约定(包含实例)

首先先解释一下栈在函数调用中的作用&#xff0c;更详细的部分请参照考研复习之数据结构笔记&#xff08;五&#xff09;栈和队列&#xff08;上&#xff09;&#xff08;包含栈的相关内容&#xff09;_管二狗赶快去工作&#xff01;的博客-CSDN博客 函数嵌套调用栈的作用是用…

移动应用开发:为移动设备优化的在线教育培训平台

移动应用开发在当今数字化时代扮演着至关重要的角色&#xff0c;尤其是在在线教育培训领域。移动设备的普及和使用&#xff0c;使得人们可以随时随地访问学习资源&#xff0c;这为在线教育培训平台提供了巨大的发展机会。本文将探讨如何为移动设备优化在线教育培训平台&#xf…

常见的数据结构(顺序表、顺序表、链表、栈、队列、二叉树)

线性表&#xff08;Linear List&#xff09;  1.什么是线性表 2.线性表的特点 3.线性表的基本运算 顺序表 1.什么是顺序表 2.时间复杂度&#xff1a; 链表 1.什么是链表 2.单向链表 3. 双向链表 4.ArrayList和LinkedList的使用 栈Stack  1.什么是栈  2.栈的基本方法 队列…

新人如何高效写 API 文档

什么是 API 文档&#xff1f; 在深入研究 API 文档之前&#xff0c;让我简要解释一下 API 是什么以及它的基本功能。 API 是应用程序编程接口的首字母缩写。 ​ 编辑 切换为居中 通过 API 将设备连接到数据库 无论你是初学者还是高级开发人员&#xff0c;你都会在软件开发…

数学建模-博弈论

张雪峰&#xff1a; 小时候以为长大就好了 长大后才是问题的开始。 人生最重要的就三件事: 学习&#xff0c;工作&#xff0c;结婚。 第一件事:学习 以现在的人生角度去看&#xff0c;其实学习这件事是最容易的&#xff0c;十几年只干好这一件事就行了&#xff0c;我们那时候不…

网络安全 Day26-PHP 简单学习

PHP 简单学习 1. 为什么要学习PHP2. PHP语法3. php 变量4. 字符串数据5. PHP 函数6. 数组 1. 为什么要学习PHP php存量多开源软件多很多安全流程 渗透方法 sql注入基于PHP语言入门简单 2. PHP语法 格式: <?php 内容?>或<?内容?>结尾分号例子<?php phpin…

Qt展示动态波形

Qt展示动态波形 需求描述成品展示实现难点Qt多线程 需求描述 接入串口&#xff0c;配置串口顺序进行接收数据&#xff1b;数据分成两个串口分别传入&#xff0c;使用多线程并发接入&#xff1b;时域数据有两个通道&#xff08;I&#xff0c;Q&#xff09;&#xff0c;分别以实…

flask-session、数据库连接池

flask 自带session---》以cookie的形式放到了浏览器中---》加密 真正的session&#xff0c;是在服务端存储 -django中存在djangosession表中 -flask中&#xff0c;使用第三方&#xff0c;保存在---》redis中---》flask-session 使用步骤 pip install flask-session …

Linux笔记1(系统状态等)

man命令&#xff1a; man name: man section name: man -k regexp: 在 Linux 中&#xff0c;man 命令用于查看命令、函数或配置文件等的手册页&#xff0c;提供了详细的帮助文档。man 是 "manual" 的缩写。man 命令的用法如下&#xff1a; man [选项] [命令名]例如&…

探索编程世界的宝藏:程序员必掌握的20大算法

文章目录 1 引言2 冒泡排序算法&#xff1a;编程世界的排序魔法 &#x1f9d9;‍♀️&#x1f522;3 选择排序算法&#xff1a;排序世界的精确挑选器 &#x1f3af;&#x1f522;4 插入排序算法&#xff1a;排序世界的巧妙插珠者 ✨&#x1f522;5 快速排序算法&#xff1a;排序…

基于人工智能的智能矿山解决方案

什么是智能矿山&#xff1f; 智能矿山是一种运用先进技术和智能化系统来管理和监控矿山运营的概念。它利用传感器、无线通信、数据分析和人工智能等技术&#xff0c;实现对矿山内部各个环节的实时监测、自动化控制和智能决策&#xff0c;从而提高矿山的效率、安全性和可持续性。…

自动化测试的优缺点

围绕测试自动化有很多议论&#xff0c;组织正在进行大量投资以利用测试自动化的好处。测试自动化可以指使用软件工具自动执行测试、将实际结果与预期结果进行比较以及报告差异/错误的过程。实施测试自动化的主要原因之一是减少手动工作和相关风险&#xff0c;同时测试重复性任务…