大数据进阶之路——Spark SQL环境搭建

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 大数据进阶之路——Spark SQL环境搭建2

@[toc]

大数据概述

  • 定义和特征

    • 海量的计算
    • 大量的用户全体
    • 数据分析
    • 数据管理
  • 4V特征

1.Volume(大量)
  截至目前,人类生产的所有印刷材料的数据量是200PB,而历史上全人类总共说过的话的数据量大约是5EB。当前,典型个人计算机硬盘的容量为TB量级,而一些大企业的数据量已经接近EB量级。

2.Velocity(高速)
  这是大数据区分于传统数据挖掘的最显著特征。根据IDC的“数字宇宙”的报告,预计到2020年,全球数据使用量将达到35.2ZB。在如此海量的数据面前,处理数据的效率就是企业的生命。
  天猫双十一:2017年3分01秒,天猫交易额超过100亿。

3.Variety(多样)
  这种类型的多样性也让数据被分为结构化数据和非结构化数据。相对于以往便于存储的以数据库/文本为主的结构化数据,非结构化数据越来越多,包括网络日志、音频、视频、图片、地理位置信息等,这些多类型的数据对数据的处理能力提出了更高要求。

4.Value(低价值密度)
  价值密度的高低与数据总量的大小成反比。比如,在一天监控视频中,我们只关心一个人晚上在健身房健身那一分钟,如何快速对有价值数据“提纯”成为目前大数据背景下待解决的难题。

大数据组成

Modules

  • Hadoop Common: The common utilities that support the other Hadoop modules.
  • Hadoop Distributed File System (HDFS™): A distributed file system that provides high-throughput access to application data.
  • Hadoop YARN: A framework for job scheduling and cluster resource management.
  • Hadoop MapReduce: A YARN-based system for parallel processing of large data sets.
  • Hadoop Ozone: An object store for Hadoop.

组件

  • 分布式文件系统:HDFS用于将文件分布式存储载很多的服务器上
  • 分布式计算框架:MapReduce实现在很多机器分布式并行计算
  • 分布式资源调度框架:YARN实现集群资源管理以及作业的调度

HDFS概述

  1. 特点
  • 分布式的
  • commodity、low-cost hardware:去中心化IoE
  • fault-tolerant:高容错 , 默认采用3副本机制
  • high throughput:移动计算比移动数据成本低
  • large data sets:大规模的数据集 , 基本都是GB和TB级别
  1. HDFS架构详解
  • NameNode(master) / DataNodes(slave) HDFS 遵循主/从架构master/slave,由 单个 NameNode(NN) 和多个 DataNode(DN) 组成:

    • NameNode : 负责执行有关 文件系统命名空间 the file system namespace 的操作,大多数文件系统类似 (如 Linux) , 支持 增删改查 文件和目录等。它同时还负责集群元数据的存储,记录着文件中各个数据块的位置信息。
    • DataNode:负责提供来自文件系统客户端的读写请求,执行块的创建,删除等操作。
  • HDFS 将每一个文件存储为一系列,每个块由多个副本来保证容错,这些块存储在DN中, 当然这些块的大小和复制因子可以自行配置( 默认情况下,块大小是 128M,默认复制因子是 3 )。
  • 环境运行在 GNU/Linux 中. HDFS 用的是 Java 语言

HdfsDesign

举例
一个a.txt 共有150M 一个blocksize为128M
则会拆分两个block 一个是block1: 128M ; 另个block2: 22M

那么问题来了, block1 和block2 要存放在哪个DN里面?
这个 对于用户是透明的 , 这个就要用 HDFS来完成

  • NameNode(master)

1)负责客户端请求的响应
2)负责元数据(文件的名称、副本系数、Block存放的DataNodes)的管理

  • DataNodes(slave)

1)存储用户的文件对应的数据块(Block)
2)要定期向NameNode发送心跳信息,汇报本身及其所有的block信息,健康状况

  • 副本系数

    • It stores each file as a sequence of blocks. The blocks of a file are replicated for fault tolerance. The block size and replication factor are configurable per file.( 默认情况下,块大小是 128M,默认复制因子是 3)
    • An application can specify the number of replicas of a file. The replication factor can be specified at file creation time and can be changed later.( 复制因子和块大小, 可以改的)

环境搭建

  1. 下载Hadoop
    http://archive.cloudera.com/cdh5/cdh/5/
    2.6.0-cdh5.7.0

    wget http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.7.0.tar.gz

2)安装jdk

下载
解压到app目录:`tar -zxvf jdk-7u51-linux-x64.tar.gz -C ~/app/`
验证安装是否成功:`~/app/jdk1.7.0_51/bin      ./java -version`
建议把bin目录配置到系统环境变量(~/.bash_profile)中
        export JAVA_HOME=/home/hadoop/app/jdk1.7.0_51
        export PATH=$JAVA_HOME/bin:$PATH

3)机器参数设置

  • 修改机器名:vi /etc/sysconfig/network
        NETWORKING=yes
        HOSTNAME=hadoop001
  • 设置ip和hostname的映射关系:vi /etc/hosts
        192.168.199.200 hadoop001
        127.0.0.1 localhost
  • ssh免密码登陆(本步骤可以省略,但是后面你重启hadoop进程时是需要手工输入密码才行)
        ssh-keygen -t rsa
        cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys

4)Hadoop配置文件修改: ~/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop

  • hadoop-env.sh

配置Java目录export JAVA_HOME=/home/hadoop/app/jdk1.7.0_51

  • core-site.xml

配置伪分布式

    <property>
            <name>fs.defaultFS</name>
            <value>hdfs://hadoop001:8020</value>
        </property>    

        <property>
            <name>hadoop.tmp.dir</name>
            <value>/home/hadoop/app/tmp</value>
        </property>    
  • hdfs-site.xml

调整副本系数

        <property>
            <name>dfs.replication</name>
            <value>1</value>
    </property>

5)格式化HDFS
注意:这一步操作,只是在第一次时执行 ,每次如果都格式化的话,那么HDFS上的数据就会被清空
~/app/hadoop-2.6.0-cdh5.7.0/bin/hdfs namenode -format
看到下面日志表示成功
X X X X Xhas been successfully formatted.

6)启动HDFS

`~/app/hadoop-2.6.0-cdh5.7.0/sbin/start-dfs.sh`

验证是否启动成功:
        jps
            DataNode
            SecondaryNameNode
            NameNode

        浏览器
            http://hadoop001:50070/

7)停止HDFS
sbin/stop-dfs.sh

HDFS命令

[hadoop@hadoop000 bin]$ ./hadoop
Usage: hadoop [--config confdir] COMMAND
       where COMMAND is one of:
  fs                   run a generic filesystem user client
  version              print the version
  jar <jar>            run a jar file
  checknative [-a|-h]  check native hadoop and compression libraries availability
  distcp <srcurl> <desturl> copy file or directories recursively
  archive -archiveName NAME -p <parent path> <src>* <dest> create a hadoop archive
  classpath            prints the class path needed to get the
  credential           interact with credential providers
                       Hadoop jar and the required libraries
  daemonlog            get/set the log level for each daemon
  s3guard              manage data on S3
  trace                view and modify Hadoop tracing settings
 or
  CLASSNAME            run the class named CLASSNAME

Most commands print help when invoked w/o parameters.


[hadoop@hadoop000 bin]$ ./hadoop fs
Usage: hadoop fs [generic options]
    [-appendToFile <localsrc> ... <dst>]
    [-cat [-ignoreCrc] <src> ...]
    [-chgrp [-R] GROUP PATH...]
    [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]
    [-chown [-R] [OWNER][:[GROUP]] PATH...]
    [-copyFromLocal [-f] [-p] [-l] <localsrc> ... <dst>]
    [-copyToLocal [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
    [-count [-q] [-h] [-v] [-x] <path> ...]
    [-cp [-f] [-p | -p[topax]] <src> ... <dst>]
    [-df [-h] [<path> ...]]
    [-du [-s] [-h] [-x] <path> ...]
    [-find <path> ... <expression> ...]
    [-get [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]
    [-getfacl [-R] <path>]
    [-getfattr [-R] {-n name | -d} [-e en] <path>]
    [-getmerge [-nl] <src> <localdst>]
    [-help [cmd ...]]
    [-ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [<path> ...]]
    [-mkdir [-p] <path> ...]
    [-moveFromLocal <localsrc> ... <dst>]
    [-moveToLocal <src> <localdst>]
    [-mv <src> ... <dst>]
    [-put [-f] [-p] [-l] <localsrc> ... <dst>]
    [-rm [-f] [-r|-R] [-skipTrash] <src> ...]
    [-rmdir [--ignore-fail-on-non-empty] <dir> ...]
    [-test -[defsz] <path>]
    [-text [-ignoreCrc] <src> ...]
    [-touchz <path> ...]
    [-usage [cmd ...]]
  • 常用命令

hadoop fs -ls /
hadoop fs -cat /==hadoop fs -text /
hadoop fs -put /==hadoop fs -copyFromLocal /
hadoop fs -get /README.txt ./
hadoop fs -mkdir /hdfs-test
hadoop fs -mv
hadoop fs -rm
hadoop fs -rmdir
hadoop fs -rmr==hadoop fs -rm -r
hadoop fs -getmerge
hadoop fs -mkdir /hdfs-test

 MapReduce

MapReduce性能远低于 Spark
并且只适合做离线处理不适合做实时处理和流式处理

YARN架构详解

Apache YARN (Yet Another Resource Negotiator) 是 hadoop 2.0 引入的集群资源管理系统。用户可以将各种服务框架部署在 YARN 上,由 YARN 进行统一地管理和资源分配。

The fundamental idea of MRv2 is to split up the two major functionalities of the JobTracker, resource management and job scheduling /monitoring, into separate daemons. The idea is to have a global ResourceManager (RM) and per-application ApplicationMaster (AM). An application is either a single job in the classical sense of Map-Reduce jobs or a DAG of jobs.

1 RM(ResourceManager) + N NM(NodeManager)

  1. Client
  • RM提交任务
  • 杀死任务
  1. ResourceManager
  • ResourceManager 通常在独立的机器上以后台进程的形式运行,一个集群active状态的`ResourceManager`只有一个 ,它是整个 集群资源的主要协调者和管理者

-2)启动/监控`ApplicationMaster`(一个作业对应一个AM)和监控`NodeManager`

  • 负责给用户提交的所有应用程序分配资源 ,它根据应用程序优先级、队列容量、ACLs、数据位置等信息,做出决策,然后以共享的、安全的、多租户的方式制定分配策略,调度集群资源。
  1. NodeManager

整个集群中有N个,负责单个节点的资源管理和使用以及task的运行情况

  • NodeManager 是 YARN 集群中的每个具体 节点的管理者
  • 主要 负责该单个节点内所有容器的生命周期的管理,监视资源和跟踪节点健康 。具体如下:

    • 定时启动时向 ResourceManager 注册并定时发送心跳消息,等待 ResourceManager 的指令;
    • 维护 Container 的生命周期,监控 Container 的资源使用情况和启停的各种命令;
    • 管理任务运行时的相关依赖,根据 ApplicationMaster 的需要,在启动 Container 之前将需要的程序及其依赖拷贝到本地。
  1. ApplicationMaster

每个应用/作业对应一个,负责应用程序的管理

  • 在用户提交一个应用程序时,YARN 会启动一个轻量级的 进程 ApplicationMaster
  • ApplicationMaster 负责协调来自 ResourceManager 的资源,并通过 NodeManager 监视容器内资源的使用情况,同时还负责任务的监控与容错。具体如下:

    • 根据应用的运行状态来决定动态计算资源需求;
    • ResourceManager 申请资源,为应用程序向RM申请资源(container),并分配给内部任务
    • 跟踪任务状态和进度,NM通信以启停task, task是运行在container中的
    • 负责任务的容错。
  1. Container
  • Container 是 YARN 中的 资源抽象 ,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等。
  • 当 AM 向 RM 申请资源时,RM 为 AM 返回的资源是用 Container 表示的。
  • YARN 会为每个任务分配一个 Container,该任务只能使用该 Container 中描述的资源。ApplicationMaster 可在 Container 内运行任何类型的任务。例如,MapReduce ApplicationMaster 请求一个容器来启动 map reduce 任务

YARN执行流程

  1. 客户端clientyarn集群提交作业 , 首先①向ResourceManager申请分配资源
  2. Resource Manager会为作业分配一个Container(Application manager),Container里面运行这(Application Manager)
  3. Resource Manager会找一个对应的NodeManager 通信②,要求NodeManager在这个container上启动应用程序Application Master
  4. Application MasterResource Manager申请资源④(采用轮询的方式通过RPC协议),Resource scheduler将资源封装发给Application master④,
  5. Application Master将获取到的资源分配给各个Node Manager,并监控运行情况⑤
  6. Node Manage得到任务和资源开始执行作业⑥
  7. 再细分作业的话可以分为 先执行Map Task,结束后在执行Reduce Task 最后再将结果返回給Application Master等依次往上层递交⑦

YARN环境搭建

[hadoop@hadoop001 hadoop]$ pwd
/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop
  • mapred-site.xml
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
  • yarn-site.xml
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

启动yarn:sbin/start-yarn.sh

验证是否启动成功

    jps
        ResourceManager
        NodeManager

    web: http://hadoop001:8088

停止yarn: sbin/stop-yarn.sh

提交mr作业到yarn上运行: wc

hadoop jar /home/hadoop/app/hadoop-2.6.0-cdh5.7.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar wordcount /input/wc/hello.txt /output/wc/

[hadoop@hadoop001 sbin]$ hadoop fs -ls /output/wc
20/10/16 05:17:27 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Found 2 items
-rw-r--r--   1 hadoop supergroup          0 2020-10-16 04:54 /output/wc/_SUCCESS
-rw-r--r--   1 hadoop supergroup         26 2020-10-16 04:54 /output/wc/part-r-00000
[hadoop@hadoop001 sbin]$ hadoop fs -cat /output/wc/part-r-00000
20/10/16 05:17:52 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
hello    2
welcome    2
world    1

Hive环境搭建

Hive体系架构

Hive RDBMS
查询语言 Hive SQL SQL
数据储存 HDFS Raw Device or Local FS
索引 无(支持比较弱)
执行 MapReduce、 Tez Excutor
执行时延 高,离线 低 , 在线
数据规模 非常大, 大

Hive底层的执行引擎有:MapReduce、Tez、Spark

Hive on MapReduce
Hive on Tez
Hive on Spark

1)Hive下载:

`wget http://archive.cloudera.com/cdh5/cdh/5/hive-1.1.0-cdh5.7.0.tar.gz`

2)解压

`tar -zxvf hive-1.1.0-cdh5.7.0.tar.gz -C ~/app/`

3)配置

系统环境变量(~/.bahs_profile)
        export HIVE_HOME=/home/hadoop/app/hive-1.1.0-cdh5.7.0
        export PATH=$HIVE_HOME/bin:$PATH
实现安装一个`mysql, yum install xxx`

进入/home/hadoop/app/hive-1.1.0-cdh5.14.2/conf

4)cp hive-env.sh.template hive-env.sh

`hive-env.sh`修改HADOOP_HOME

5)新建hive-site.xml文件

    <configuration>
        <property>
            <name>javax.jdo.option.ConnectionURL</name>
            <value>jdbc:mysql://localhost:3306/sparksql?createDatabaseIfNotExist=true useUnicode=true characterEncoding=UTF-8 useSSL=false</value>#不然会报错MySQL版本的关系
        </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>
    </configuration>

6)拷贝mysql驱动到$HIVE_HOME/lib/

https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.30.zip下载
scp mysql-connector-java-5.1.30-bin.jar ~/app/hive-1.1.0-cdh5.14.2/lib/

7)启动hive: $HIVE_HOME/bin/hive

关于Hive具体操作可以见:https://www.cnblogs.com/hiszm/p/13616589.html

### 配置虚拟机

  • 改ip地址
[hadoop@hadoop001 software]$ sudo vi /etc/hosts
[hadoop@hadoop001 software]$ cd  /etc/sysconfig/network-scripts/
[hadoop@hadoop001 network-scripts]$ ls
ifcfg-eth0   ifdown-isdn    ifup-aliases  ifup-plusb     init.ipv6-global
ifcfg-lo     ifdown-post    ifup-bnep     ifup-post      net.hotplug
ifdown       ifdown-ppp     ifup-eth      ifup-ppp       network-functions
ifdown-bnep  ifdown-routes  ifup-ippp     ifup-routes    network-functions-ipv6
ifdown-eth   ifdown-sit     ifup-ipv6     ifup-sit
ifdown-ippp  ifdown-tunnel  ifup-isdn     ifup-tunnel
ifdown-ipv6  ifup           ifup-plip     ifup-wireless
[hadoop@hadoop001 network-scripts]$ sudo vi ifcfg-eth0 
[hadoop@hadoop001 network-scripts]$ sudo vi ifcfg-eth0 

[hadoop@hadoop001 ~]$ ping baidu.com
PING baidu.com (220.181.38.148) 56(84) bytes of data.
64 bytes from 220.181.38.148: icmp_seq=1 ttl=51 time=294 ms
64 bytes from 220.181.38.148: icmp_seq=2 ttl=51 time=742 ms
64 bytes from 220.181.38.148: icmp_seq=3 ttl=51 time=541 ms
  • 启动HDFS
[hadoop@hadoop001 sbin]$ pwd
/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/sbin
[hadoop@hadoop001 sbin]$ ./start-dfs.sh 
20/10/16 00:57:03 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Starting namenodes on [hadoop001]
hadoop001: Warning: Permanently added the RSA host key for IP address '192.168.43.214' to the list of known hosts.
hadoop001: starting namenode, logging to /home/hadoop/app/hadoop-2.6.0-cdh5.7.0/logs/hadoop-hadoop-namenode-hadoop001.out
localhost: starting datanode, logging to /home/hadoop/app/hadoop-2.6.0-cdh5.7.0/logs/hadoop-hadoop-datanode-hadoop001.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: starting secondarynamenode, logging to /home/hadoop/app/hadoop-2.6.0-cdh5.7.0/logs/hadoop-hadoop-secondarynamenode-hadoop001.out
20/10/16 00:58:17 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
[hadoop@hadoop001 sbin]$ jps
3374 Jps
2952 NameNode
3187 SecondaryNameNode
3044 DataNode



  • 启动YARN
[hadoop@hadoop001 sbin]$ pwd
/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/sbin
[hadoop@hadoop001 sbin]$ ./start-yarn.sh
starting yarn daemons
starting resourcemanager, logging to /home/hadoop/app/hadoop-2.6.0-cdh5.7.0/logs/yarn-hadoop-resourcemanager-hadoop001.out
localhost: starting nodemanager, logging to /home/hadoop/app/hadoop-2.6.0-cdh5.7.0/logs/yarn-hadoop-nodemanager-hadoop001.out
[hadoop@hadoop001 sbin]$ jps
3573 Jps
3438 ResourceManager
2952 NameNode
3534 NodeManager
3187 SecondaryNameNode
3044 DataNode

  • 启动Hive

[hadoop@hadoop001 bin]$ pwd
/home/hadoop/app/hive-1.1.0-cdh5.7.0/bin
[hadoop@hadoop001 bin]$ ./hive
ls: cannot access /home/hadoop/app/spark-2.1.0-bin-2.6.0-cdh5.7.0/lib/spark-assembly-*.jar: No such file or directory
which: no hbase in (/home/hadoop/app/spark-2.1.0-bin-2.6.0-cdh5.7.0/bin:/home/hadoop/app/scala-2.11.8/bin:/home/hadoop/app/hive-1.1.0-cdh5.7.0/bin:/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/bin:/home/hadoop/app/apache-maven-3.3.9/bin:/home/hadoop/app/jdk1.7.0_51/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin)

Logging initialized using configuration in jar:file:/home/hadoop/app/hive-1.1.0-cdh5.7.0/lib/hive-common-1.1.0-cdh5.7.0.jar!/hive-log4j.properties
WARNING: Hive CLI is deprecated and migration to Beeline is recommended.
hive> show tables
    > ;
OK
dept
emp
hive_wordcount
Time taken: 3.118 seconds, Fetched: 3 row(s)
hive> 

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
1月前
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
130 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
24天前
|
SQL 算法 大数据
为什么大数据平台会回归SQL
在大数据领域,尽管非结构化数据占据了大数据平台80%以上的存储空间,结构化数据分析依然是核心任务。SQL因其广泛的应用基础和易于上手的特点成为大数据处理的主要语言,各大厂商纷纷支持SQL以提高市场竞争力。然而,SQL在处理复杂计算时表现出的性能和开发效率低下问题日益凸显,如难以充分利用现代硬件能力、复杂SQL优化困难等。为了解决这些问题,出现了像SPL这样的开源计算引擎,它通过提供更高效的开发体验和计算性能,以及对多种数据源的支持,为大数据处理带来了新的解决方案。
|
1月前
|
SQL 存储 算法
比 SQL 快出数量级的大数据计算技术
SQL 是大数据计算中最常用的工具,但在实际应用中,SQL 经常跑得很慢,浪费大量硬件资源。例如,某银行的反洗钱计算在 11 节点的 Vertica 集群上跑了 1.5 小时,而用 SPL 重写后,单机只需 26 秒。类似地,电商漏斗运算和时空碰撞任务在使用 SPL 后,性能也大幅提升。这是因为 SQL 无法写出低复杂度的算法,而 SPL 提供了更强大的数据类型和基础运算,能够实现高效计算。
|
1月前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第27天】在大数据时代,数据湖技术凭借其灵活性和成本效益成为企业存储和分析大规模异构数据的首选。Hadoop和Spark作为数据湖技术的核心组件,通过HDFS存储数据和Spark进行高效计算,实现了数据处理的优化。本文探讨了Hadoop与Spark的最佳实践,包括数据存储、处理、安全和可视化等方面,展示了它们在实际应用中的协同效应。
110 2
|
1月前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第26天】本文详细探讨了Hadoop与Spark在大数据处理中的协同作用,通过具体案例展示了两者的最佳实践。Hadoop的HDFS和MapReduce负责数据存储和预处理,确保高可靠性和容错性;Spark则凭借其高性能和丰富的API,进行深度分析和机器学习,实现高效的批处理和实时处理。
74 1
|
1月前
|
SQL JSON 分布式计算
【赵渝强老师】Spark SQL的数据模型:DataFrame
本文介绍了在Spark SQL中创建DataFrame的三种方法。首先,通过定义case class来创建表结构,然后将CSV文件读入RDD并关联Schema生成DataFrame。其次,使用StructType定义表结构,同样将CSV文件读入RDD并转换为Row对象后创建DataFrame。最后,直接加载带有格式的数据文件(如JSON),通过读取文件内容直接创建DataFrame。每种方法都包含详细的代码示例和解释。
|
7月前
|
SQL 分布式计算 数据库
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
292 0
|
7月前
|
SQL 分布式计算 大数据
【大数据技术Hadoop+Spark】Spark SQL、DataFrame、Dataset的讲解及操作演示(图文解释)
【大数据技术Hadoop+Spark】Spark SQL、DataFrame、Dataset的讲解及操作演示(图文解释)
176 0
|
2月前
|
SQL 分布式计算 大数据
大数据-94 Spark 集群 SQL DataFrame & DataSet & RDD 创建与相互转换 SparkSQL
大数据-94 Spark 集群 SQL DataFrame & DataSet & RDD 创建与相互转换 SparkSQL
74 0
|
4月前
|
SQL 存储 分布式计算
下一篇
DataWorks