数据处理

kafka不为人知的一面-Kafka streams

荒凉一梦 提交于 2020-02-11 22:46:43
kafka不为人知的一面-Kafka streams 1、为什么要有kafka stream 当前已经有非常多的流式处理系统,最知名且应用最多的开源流式处理系统有Spark Streaming和Apache Storm。Apache Storm发展多年,应用广泛,提供记录级别的处理能力,当前也支持SQL on Stream。而Spark Streaming基于Apache Spark,可以非常方便与图计算,SQL处理等集成,功能强大,对于熟悉其它Spark应用开发的用户而言使用门槛低。另外,目前主流的Hadoop发行版,如Cloudera和Hortonworks,都集成了Apache Storm和Apache Spark,使得部署更容易。 既然Apache Spark与Apache Storm拥用如此多的优势,那为何还需要Kafka Stream呢?主要有如下原因。 第一,Spark和Storm都是流式处理框架,而Kafka Stream提供的是一个基于Kafka的流式处理类库。框架要求开发者按照特定的方式去开发逻辑部分,供框架调用。开发者很难了解框架的具体运行方式,从而使得调试成本高,并且使用受限。而Kafka Stream作为流式处理类库,直接提供具体的类给开发者调用,整个应用的运行方式主要由开发者控制,方便使用和调试。 第二

第 4 章 SparkSQL数据源

白昼怎懂夜的黑 提交于 2020-02-11 14:23:44
上篇: 第 3章 IDEA创建SparkSQL程序 通用加载/保存方法 1、手动指定选项 Spark SQL的DataFrame接口支持多种数据源的操作。一个DataFrame可以进行RDDs方式的操作,也可以被注册为临时表。把DataFrame注册为临时表之后,就可以对该DataFrame执行SQL查询。 Spark SQL的默认数据源为Parquet格式。数据源为Parquet文件时,Spark SQL可以方便的执行所有的操作。修改配置项spark.sql.sources.default,可修改默认数据源格式。 读取 //查看文件格式 scala > spark . read . csv format jdbc json load option options orc parquet schema table text textFile // scala > spark . read . load ( "file:///usr/local/hadoop/module/datas/2.json" ) 报错信息: 查看spark文件信息: 尝试读取 users.parque t这个文件的信息: scala > spark . read . load ( "file:///usr/local/hadoop/Spark/spark-2.1.1-bin-hadoop2.7

2 R语言数据处理基础及函数应用

两盒软妹~` 提交于 2020-02-11 09:25:42
2.1 基本计算 2.1.1 数据类型 在R语言中,一切皆对象。对象是可以赋值给变量的任何事物,包括常量、数据结构、函数、甚至图形。每个对象都有类。R语言是面向对象的,R能处理的对象(包括数据)统称为object,一个object都有它所归属的类(class),一个class至少有一个特征是这类数据所共有的。类又可以被继承,产生儿孙类。 R语言中所有的对象都有2个内在属性,即:类型和长度。类型是对象元素的基本种类,长度是对象中元素的个数。R语言最基本的数据类型有:数值型(numeric)、复数型(complex)、逻辑型(logical)、字符型(character)等,还有不常用的类型,例如函数或表达式。 数据类型组成了对象,主要有6种结构,包括:向量、因子、数组、矩阵、列表、数据框等。多样化的数据对象赋予R语言灵活的数据处理能力。相关内容简述如下,详细内容可查阅帮助文件或有关文献。 (1)向量 向量(vector)是R语言处理数据的最基本单位,即可以是一串数字,也可以是一个数字。向量(vector)是虚拟类,本身不指定数据的存储类型,但赋值后立即变为数值型(numeric)、逻辑型(logical)、字符型(character)等实际数据类型。向量必须保证它的所有元素具有数据类型。 通过函数getClass()查到向量(vector)所包含的数据类型多达21种。

spark 的createDstream和createDirectStream区别

江枫思渺然 提交于 2020-02-11 02:59:44
spark读取kafka数据流提供了两种方式createDstream和createDirectStream。 两者区别如下: 1、KafkaUtils.createDstream 构造函数为KafkaUtils.createDstream(ssc, [zk], [consumer group id], [per-topic,partitions] ) 使用了receivers来接收数据,利用的是Kafka高层次的消费者api,对于所有的receivers接收到的数据将会保存在 Spark executors中,然后通过Spark Streaming启动job来处理这些数据,默认会丢失,可启用WAL日志,该日志存储在HDFS上 A、创建一个receiver来对kafka进行定时拉取数据,ssc的rdd分区和kafka的topic分区不是一个概念,故如果增加特定主体分区数仅仅是增加一个receiver中消费topic的线程数,并不增加spark的并行处理数据数量 B、对于不同的group和topic可以使用多个receivers创建不同的DStream C、如果启用了WAL,需要设置存储级别,即KafkaUtils.createStream(….,StorageLevel.MEMORY_AND_DISK_SER) 2.KafkaUtils.createDirectStream

第一章 Hue的安装

£可爱£侵袭症+ 提交于 2020-02-11 02:24:10
第一章 Hue的安装 1、Hue的介绍 HUE= Hadoop User Experience ​ Hue是一个开源的Apache Hadoop UI系统,由Cloudera Desktop演化而来,最后Cloudera公司将其贡献给Apache基金会的Hadoop社区,它是基于Python Web框架Django实现的。 ​ 通过使用Hue我们可以在浏览器端的Web控制台上与Hadoop集群进行交互来分析处理数据,例如操作HDFS上的数据,运行MapReduce Job,执行Hive的SQL语句,浏览HBase数据库等等。 HUE链接 · Site: http://gethue.com/ · Github: https://github.com/cloudera/hue · Reviews: https://review.cloudera.org Hue的架构 核心功能 · SQL编辑器,支持Hive, Impala, MySQL, Oracle, PostgreSQL, SparkSQL, Solr SQL, Phoenix… · 搜索引擎Solr的各种图表 · Spark和Hadoop的友好界面支持 · 支持调度系统Apache Oozie,可进行workflow的编辑、查看 HUE提供的这些功能相比Hadoop生态各组件提供的界面更加友好

Spark复习 Day03:SparkSQL

你。 提交于 2020-02-10 21:52:28
Spark复习 Day03:SparkSQL 1. 什么是SparkSQL ----------------------------------------------- - SparkSQL是Spark用来处理结构化[表]数据的一个模块。 - 它提供了两个编程抽象:DataFrame和DataSet,底层还是RDD操作 2. DataFrame、DataSet 介绍 ------------------------------------------------ - DataFrame 1. 与RDD类似,DataFrame也是一个分布式数据容器 2. 不同的是,DataFrame更像是传统数据库的二维表格 3. 除了记录了数据以外,还记录了数据的结构信息,即Schema 4. 与Hive一样,DataFrame也支持嵌套数据类型[struct,array,map] 5. DataFrame的API 比 RDD的API更加好用 6. DataFrame是为数据提供了Schema的视图,可以把它当做数据库的一张表来对待 - DataSet 1. Dataset是DataFrameAPI的一个拓展,是Spark最新的数据抽象。DataFrame的升级版 2. 用户友好的API风格,既有类型的安全检查,収DataFrame的查询优化特性 3. DataSet支持编解码器

hadoop 集群调优实践总结

不问归期 提交于 2020-02-10 03:12:37
调优概述 # 几乎在很多场景,MapRdeuce或者说分布式架构,都会在IO受限,硬盘或者网络读取数据遇到瓶颈.处理数据瓶颈CPU受限.大量的硬盘读写数据是海量数据分析常见情况. IO受限例子: 索引 分组 数据倒入导出 数据移动和转换 CPU受限例子: 聚类/分类 复杂的文本挖掘 特征提取 用户画像 自然语言处理 我们需要从硬件规划和软件规划等多方面结合实现性能和效率的提升。 硬件规划 # 评估集群规模 # 我们需要搭建多少节点的hadoop集群?回答这个问题考虑的因素比较多:预算?数据量?计算资源? 需要多少计算资源可能不是特别好评估,推荐横向扩展,随业务规模和应用发展再考虑扩展。开始可以就按照数据量来评估数据规模,估计一下每天的数据增量?保存数据的周期是多少?有没有冷数据方案? 假设每天增长的数据为600G、3备份存储,以一年规划为例,大概存储为600G 3 360天=633T, 再考虑增加%20的预留,考虑未来数据增长的趋势,考虑应用计算等空间需求。为节省空间可考虑压缩存储(大概可以节省70%空间)。 同时考虑一定冗余量,如果集群一部分节点不可用也要保证业务正常使用(根据集群规模评估冗余比例)。 然后结合节点硬件规划和预算,确定集群规模。假如我们需要650T存储,可以采用30台12 x 2TB的存储配置或者 60台6 x 2TB配置,但是节点数量翻翻

Hadoop使用常见问题以及解决方法2

南笙酒味 提交于 2020-02-10 02:38:29
3:处理速度特别的慢 出现map很快 但是reduce很慢 而且反复出现 reduce=0% Answer: 结合第二点,然后 修改 conf/hadoop-env.sh 中的export HADOOP_HEAPSIZE=4000 4:能够启动datanode,但无法访问,也无法结束的错误 在重新格式化一个新的分布式文件时,需要将你NameNode上所配置的dfs.name.dir这一namenode用来存放NameNode 持久存储名字空间及事务日志的本地文件系统路径删除,同时将各DataNode上的dfs.data.dir的路径 DataNode 存放块数据的本地文件系统路径的目录也删除。如本此配置就是在NameNode上删除/home/hadoop/NameData,在DataNode上删除/home/hadoop/DataNode1和/home/hadoop/DataNode2。这是因为Hadoop在格式化一个新的分布式文件系统时,每个存储的名字空间都对应了建立时间的那个版本(可以查看/home/hadoop /NameData/current目录下的VERSION文件,上面记录了版本信息),在重新格式化新的分布式系统文件时,最好先删除NameData 目录。必须删除各DataNode的dfs.data.dir

Spark集群术语

♀尐吖头ヾ 提交于 2020-02-09 07:31:08
Spark集群术语解析 1. Application Application是用户在Spark上构建(编写)的程序,包含driver program 和executors(分布在集群中多个节点上运行的Executor代码)。 2. SparkContext Spark的上下文对象,是程序的起点,通往集群的入口(与cluster进行连接),通过其可以创建RDD(获取数据),在其中配置的参数拥有最高优先级。在Spark中由SparkContext负责和ClusterManager通行,进行资源的申请,任务的分配和监控等。 3. Driver program 包含应用程序的main函数,并且运行时会创建SparkContext。当Executor部分运行完后,Driver负责将SparkContext关闭。 4. Cluster Manager 集群资源管理的外部服务,在Spark上现有Standalone(Spark自带的管理器),YARN(hadoop 2.x的管理器),Mesos等三种集群资源管理器,Standalone能满足绝大部分对集群资源管理的需求,基本上只有在集群中运行多套计算框架(例如同时运行MapReduce和Spark)的时候才建议使用YARN和Mesos。 5. Deploy mode 表明driver程序运行的位置。在”cluster”模式时

Spark中的RDD和DataFrame

╄→尐↘猪︶ㄣ 提交于 2020-02-08 18:13:14
什么是DataFrame 在Spark中,DataFrame是一种以RDD为基础的分布式数据集,类似于传统数据库中的二维表格。 RDD和DataFrame的区别 DataFrame与RDD的主要区别在于,DataFrame带有schema元信息,即DataFrame所表示的二维表数据集的每一列都带有名称和类型。使得Spark SQL得以洞察更多的结构信息,从而对藏于DataFrame背后的数据源以及作用于DataFrame之上的变换进行了针对性的优化,最终达到大幅提升运行时效率的目标。 RDD,由于无从得知所存数据元素的具体内部结构,Spark Core只能在stage层面进行简单、通用的流水线优化。 DataFrame底层是以RDD为基础的分布式数据集,和RDD的主要区别的是:RDD中没有schema信息,而DataFrame中数据每一行都包含schema DataFrame = RDD[Row] + shcema RDD转DataFrame原因及方式 可以将RDD转成DataFrame之后,借用sparksql和sql以及HQL语句快速方便的使用sql语句统计和查询,比如说分组排名(row_number() over()) 分析函数和窗口函数去实现占比分析。 将RDD转化为DataFrame有两种方式: 方式一:通过反射推断schema 要求:RDD的元素类型必须是case