大数据
文章平均质量分 70
Rnan-prince
知是行之始,行是知之成(1352638748@qq.com)
展开
-
数据库-分库分表优化
1、为什么要拆分数据库?一个数据库的连接数是有上限的,当业务系统变得繁杂时,如果都存储在一个数据库中,那么势必会因为数据库达到瓶颈;此时就需要对数据库中表进行拆分,将其分散到多个数据库中去。数据库拆分原则:就是指根据系统业务实际情况,将原本放在一个数据库中的数据分散放到多个数据库中去,减少单库的负载。2、垂直拆分垂直切分:简单的说就是将数据库中的各个表,依据业务情况将一些表放在一个数据库中,一些表放在另外一个数据库中,比如商城这些的数据库端按照业务垂直拆分:按照业务订单数据库、用户数据库、原创 2021-11-20 20:03:52 · 773 阅读 · 0 评论 -
Redis+bitmap的应用
BitMap是什么就是通过一个bit位来表示某个元素对应的值或者状态,其中的key就是对应元素本身。我们知道8个bit可以组成一个Byte,所以bitmap本身会极大的节省储存空间。Redis中的BitMapRedis从2.2.0版本开始新增了setbit,getbit,bitcount等几个bitmap相关命令。虽然是新命令,但是并没有新增新的数据类型,因为setbit等命令只不过是在set上的扩展。setbit命令介绍指令SETBIT key offset value复杂度O(..原创 2021-07-15 22:20:55 · 141 阅读 · 0 评论 -
MapReduce:Combiner,partition的作用
combiner其实属于优化方案,由于带宽限制,应该尽量map和reduce之间的数据传输数量。它在Map 端把同一个key的键值对合并在一起并计算,计算规则与reduce一致,所以combiner也可以看作特殊的Reducer。Partition作用partition意思为分开,划分。它分割map每个节点的结果,按照key分别映射给不同的reduce,也是可以自定义的。其实可以理解归类。也可以理解为根据key或value及reduce的数量来决定当前的这对输出数据最终应该交由哪个reduce ta原创 2020-12-12 21:39:33 · 2272 阅读 · 0 评论 -
Hadoop实现join的几种方法
1、reduce side joinreduce side join是一种最简单的join方式,其主要思想如下:在map阶段,map函数同时读取两个文件File1和File2,为了区分两种来源的key/value数据对,对每条数据打一个标签> (tag),比如:tag=0表示来自文件File1,tag=2表示来自文件File2。即:map阶段的主要任务是对不同文件中的数据打标签。> 在reduce阶段,reduce函数获取key相同的来自File1和File2文件的value list,.原创 2020-12-12 21:35:08 · 1173 阅读 · 0 评论 -
Hadoop怎样实现二级排序
二级排序即对key和value双排序。默认情况下,Map输出的结果会对Key进行默认的排序,但是有时候需要对Key排序的同时还需要对Value进行排序,这时候就要用到二次排序了。有两种方法进行二次排序,分别为:buffer and in memory sort和 value-to-key conversion。1、buffer and in memory sort在reduce()函数中,将某个key对应的所有value保存到内存中,然后进行排序。 这种方法最大的缺点是:可能会造成out of原创 2020-12-10 00:42:52 · 1190 阅读 · 0 评论 -
Hadoop中的Sequence File
什么是SequenceFilesequenceFile文件是Hadoop用来存储二进制形式的[Key,Value]对而设计的一种平面文件(Flat File)。 可以把SequenceFile当做是一个容器,把所有的文件打包到SequenceFile类中可以高效的对小文件进行存储和处理。 SequenceFile文件并不按照其存储的Key进行排序存储,SequenceFile的内部类Writer提供了append功能。 SequenceFile中的Key和Value可以是任意类型Writable或原创 2020-12-10 00:21:10 · 418 阅读 · 0 评论 -
hadoop配置core-site.xml,hdfs-site.xml,mapred-site.xml
配置hadoop,主要是配置core-site.xml,hdfs-site.xml,mapred-site.xml三个配置文件,有两个方法可以正确配置:1.选择相应版本的hadoop,下载解压后,搜索*.xml,找到core-default.xml,hdfs-default.xml,mapred-default.xml,这些就是默认配置,可以参考这些配置的说明和key,配置hadoop集群。2.浏览apache官网,三个配置文件链接如下:http://hadoop.apache.org/docs原创 2020-12-08 23:55:00 · 4716 阅读 · 1 评论 -
hadoop:namenode的fsimage与editlog
Namenode主要维护两个文件,一个是fsimage,一个是editlog。fsimage保存了最新的元数据检查点,包含了整个HDFS文件系统的所有目录和文件的信息。对于文件来说包括了数据块描述信息、修改时间、访问时间等;对于目录来说包括修改时间、访问权限控制信息(目录所属用户,所在组)等。editlog主要是在NameNode已经启动情况下对HDFS进行的各种更新操作进行记录,HDFS客户端执行所有的写操作都会被记录到editlog中。简言之,NameNode维护了文件与数据块的映射表以.原创 2020-12-08 23:14:43 · 490 阅读 · 0 评论 -
Spark Streaming读取Kafka数据的两种方式
Spark Streaming与kafka集成有以下两种接收数据的方式:基于Receiver的方式 基于Direct的方式基于Receiver方式特点: 需要使用单独的Receiver线程来异步获取Kafka数据。 Receiver底层实现中使用了Kafka高级消费者API,因此,不需要自己管理Offset,只需指定Zookeeper和消费者组GroupID,系统便会自行管理。 执行过程: Spark Streaming启动时,会在Executor中同时启动Rece原创 2020-12-08 23:02:54 · 902 阅读 · 1 评论 -
Kafka的消息格式
Commit LogKafka储存消息的文件被它叫做log,在Kafka文档中是这样描述的:Each partition is an ordered, immutable sequence of messages that is continually appended to—a commit log这反应出来的Kafka的行为是:消息被不断地append到文件末尾,而且消息是不可变的。这种行为源于Kafka想要实现的功能:高吞吐量,多副本,消息持久化。这种简单的log形式的文件结构能够原创 2020-12-06 23:16:38 · 1935 阅读 · 0 评论 -
Spark宽依赖与窄依赖
Spark中RDD的高效与DAG(有向无环图)有很大的关系,在DAG调度中需要对计算的过程划分Stage,划分的依据就是RDD之间的依赖关系。RDD之间的依赖关系分为两种,宽依赖(wide dependency/shuffle dependency)和窄依赖(narrow dependency)1.窄依赖窄依赖就是指父RDD的每个分区只被一个子RDD分区使用,子RDD分区通常只对应常数个父RDD分区,如下图所示【其中每个小方块代表一个RDD Partition】窄依赖有分为两种:一种是一原创 2020-12-01 00:30:16 · 1257 阅读 · 0 评论 -
reduceBykey与groupByKey性能比较
reduceByKey:reduceByKey会在结果发送至reducer之前会对每个mapper在本地进行merge,有点类似于在MapReduce中的combiner。这样做的好处在于,在map端进行一次reduce之后,数据量会大幅度减小,从而减小传输,保证reduce端能够更快的进行结果计算。groupByKey:groupByKey会对每一个RDD中的value值进行聚合形成一个序列(Iterator),此操作发生在reduce端,所以势必会将所有的数据通过网络进行传输,造成不必要的浪费。原创 2020-12-01 00:17:51 · 414 阅读 · 0 评论 -
HDFS读写数据的过程
1、数据单位: block :文件上传前需要分块,这个块就是block,一般为128MB,可以修改。因为块太小:寻址时间占比过高。块太大:Map任务数太少,作业执行速度变慢。它是最大的 一个单位。 packet :packet是第二大的单位,它是client端向DataNode,或DataNode的PipLine之间传数据的基本单位,默认64KB。 chunk :chunk是最小的单位,它是client向DataNode,或DataNode的PipLine之间进行数据校验的基原创 2020-12-01 00:06:49 · 3652 阅读 · 0 评论 -
spark集群运算的模式
Spark 有很多种模式,最简单就是单机本地模式,还有单机伪分布式模式,复杂的则运行在集群中,目前能很好的运行在 Yarn和 Mesos 中,当然 Spark 还有自带的 Standalone 模式,对于大多数情况 Standalone 模式就足够了,如果企业已经有 Yarn 或者 Mesos 环境,也是很方便部署的。standalone(集群模式):典型的Mater/slave模式,不过也能看出Master是有单点故障的;Spark支持ZooKeeper来实现 HA即独立模式,自带完整的服务,可单原创 2020-11-30 23:27:27 · 567 阅读 · 0 评论 -
MapReduce的shuffle过程
一、MapReduce计算模型我们知道MapReduce计算模型主要由三个阶段构成:Map、shuffle、Reduce。Map是映射,负责数据的过滤分法,将原始数据转化为键值对;Reduce是合并,将具有相同key值的value进行处理后再输出新的键值对作为最终结果。为了让Reduce可以并行处理Map的结果,必须对Map的输出进行一定的排序与分割,然后再交给对应的Reduce,而这个将Map输出进行进一步整理并交给Reduce的过程就是Shuffle。整个MR的大致过程如下:Map和Re原创 2020-11-30 23:13:38 · 314 阅读 · 0 评论 -
Hadoop Shell命令
FS Shell调用文件系统(FS)Shell命令应使用bin/hadoop fs <args>的形式。 所有的的FS shell命令使用URI路径作为参数。URI格式是scheme://authority/path。对HDFS文件系统,scheme是hdfs,对本地文件系统,scheme是file。其中scheme和authority参数都是可选的,如果未加指定,就会使用配置中指定的默认scheme。一个HDFS文件或目录比如/parent/child可以表示成hdfs://nameno.原创 2020-11-02 23:31:49 · 879 阅读 · 0 评论 -
如何在Python Spark Streaming中更新广播变量?
我需要使用Python在Spark Structured Streaming中随时间更新广播变量(例如,在定义的时间间隔内)。好多资料都是用Scala或Java。 用Python编写Broadcast Wrapper类 如下:import timefrom datetime import datetimefrom pyspark import SparkConf, SparkContextconf = SparkConf() \ .setMaster("local") \ ..原创 2020-10-14 01:53:14 · 481 阅读 · 0 评论 -
Spark性能优化【五】- 错误问题集锦
常见错误问题集锦:ClosedChannelException Lost Executors et. al. 运行自带例子SparkPi时,NumberException HDFS端口错误 java.net.BindException: 地址已在使用 Address already in use InvalidResourceRequestException,核数过大 Incompatible clusterIDs 程序运行中途出现java.nio.channels.ClosedCha..原创 2020-07-05 16:41:58 · 236 阅读 · 0 评论 -
Spark性能优化【四】- shuffle调优
调优概述大多数Spark作业的性能主要就是消耗在了shuffle环节,因为该环节包含了大量的磁盘IO、序列化、网络数据传输等操作。因此,如果要让作业的性能更上一层楼,就有必要对shuffle过程进行调优。但是也必须提醒大家的是,影响一个Spark作业性能的因素,主要还是代码开发、资源参数以及数据倾斜,shuffle调优只能在整个Spark的性能调优中占到一小部分而已。因此大家务必把握住调优的基本原则,千万不要舍本逐末。下面我们就给大家详细讲解shuffle的原理,以及相关参数的说明,同时给出各个参数的调原创 2020-07-05 16:36:00 · 270 阅读 · 0 评论 -
Spark性能优化【三】- 数据倾斜调优
调优概述有的时候,我们可能会遇到大数据计算中一个最棘手的问题——数据倾斜,此时Spark作业的性能会比期望差很多。数据倾斜调优,就是使用各种技术方案解决不同类型的数据倾斜问题,以保证Spark作业的性能。数据倾斜发生时的现象 绝大多数task执行得都非常快,但个别task执行极慢。比如,总共有1000个task,997个task都在1分钟之内执行完了,但是剩余两三个task却要一两个小时。这种情况很常见。 原本能够正常执行的Spark作业,某天突然报出OOM(内存溢出)异常,观察异常原创 2020-07-05 16:34:10 · 248 阅读 · 0 评论 -
Spark性能优化【二】- 资源调优
调优概述Spark的资源参数,基本都可以在spark-submit命令中作为参数设置。很多Spark初学者,通常不知道该设置哪些必要的参数,以及如何设置这些参数,最后就只能胡乱设置,甚至压根儿不设置。资源参数设置的不合理,可能会导致没有充分利用集群资源,作业运行会极其缓慢;或者设置的资源过大,队列没有足够的资源来提供,进而导致各种异常。总之,无论是哪种情况,都会导致Spark作业的运行效率低下,甚至根本无法运行。因此我们必须对Spark作业的资源使用原理有一个清晰的认识,并知道在Spark作业运行过程中原创 2020-07-05 15:51:22 · 557 阅读 · 1 评论 -
Spark性能优化【一】- 开发调优
Spark-Submit 参数设置说明集群配置软件配置Hadoop 2.6.0 Spark 1.6.0硬件配置Master 节点 8 核 16G 500G 高效云盘 1 台 Worker 节点 x 10 台 8 核 16G 500G 高效云盘 10 台 总资源:8 核 16G(Worker)x 10 + 8 核 16G(Master)注意由于作业提交的时候资源只计算 CPU 和内存,所以这里磁盘的大小并未计算到总资源中。Yarn 可分.原创 2020-07-05 15:04:49 · 244 阅读 · 0 评论 -
PySpark - Spark SQL基础
Spark SQL 是 Apache Spark 处理结构化数据的模块。一、初始化 SparkSessionSparkSession 用于创建数据框,将数据框注册为表,执行 SQL 查询,缓存表及读取 Parquet 文件。from pyspark.sql import SparkSessionspark = SparkSession \ .builder \ .appName("Python Spark SQL basic example") \ .config(原创 2020-06-26 00:22:31 · 566 阅读 · 0 评论 -
PySpark - RDD基础
PySpark 是 Spark 的 Python API,允许 Python 调用Spark 编程模型。1、初始化 Sparkfrom pyspark import SparkContextsc = SparkContext(master='local[2]')2、核查 SparkContextsc.version # 获取 SparkContext 版本sc.pythonVer # 获取 Python 版本sc.ma原创 2020-06-21 17:34:10 · 578 阅读 · 1 评论 -
Kafka原理
1、kafka概述1.1 消息队列Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据客户端消费Queue的数据有两种方式:发布/订阅模式,也就是一对多,数据生产之后,推给所有的订阅者,打个比方:就像是手机上面的QQ消息,你没有打开手机看消息,但是如果有消息就会一直有消息推送过来。 点对点模式,也就是一对一,这个是主动模式,第一种模式更像是被动模式,这个就是消原创 2020-06-10 22:55:40 · 603 阅读 · 1 评论 -
Elasticsearch概念理解
终于有人把Elasticsearch原理讲透了! - 知乎https://zhuanlan.zhihu.com/p/62892586小史和老师故事,情节紧凑,承上启下,中心思想明确!!!非常好,树立大拇指!!!原创 2020-06-10 15:56:25 · 335 阅读 · 3 评论 -
基于Web访问日志的异常行为检测
http://www.nsfocus.com.cn/upload/contents/2015/03/o_19feqnnqers3e4qjcu1u6ep3ob.pdf原创 2019-09-21 10:53:02 · 1041 阅读 · 0 评论 -
使用SimHash进行海量文本去重
原文地址:http://www.cnblogs.com/maybe2030/p/5203186.html阅读目录1. SimHash与传统hash函数的区别 2. SimHash算法思想 3. SimHash流程实现 4. SimHash签名距离计算 5. SimHash存储和索引 6. SimHash存储和索引 7. 参考内容 在之前的两篇博文分别介绍了常用的hash方法...转载 2018-09-01 16:49:02 · 321 阅读 · 0 评论 -
hadoop基础总结
什么是 Hadoop? Hadoop 是一个开源软件框架,用于存储大量数据,并发处理/查询在具有多个商用硬件(即低成本硬件)节点的集群上的那些数据。总之,Hadoop = 分布式存储+分布式计算 。Hadoop的四大特性(优点)扩容能力(Scalable):Hadoop是在可用的计算机集群间分配数据并完成计算任务的,这些集群可用方便的扩展到数以千计个节点中。 成本低(Economi...原创 2018-09-04 10:50:11 · 457 阅读 · 0 评论