partition

Spark学习之路Spark之RDD

眉间皱痕 提交于 2019-11-29 14:08:29
Spark学习之路Spark之RDD 目录 一、RDD的概述 1.1 什么是RDD? RDD(Resilient Distributed Dataset)叫做 弹性分布式数据集 , 是Spark中最基本的数据抽象 ,它代表一个不可变、可分区、里面的元素可并行计算的集合。RDD具有数据流模型的特点:自动容错、位置感知性调度和可伸缩性。RDD允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能够重用工作集,这极大地提升了查询速度。 1.2 RDD的属性 (1)一组分片(Partition),即数据集的基本组成单位。对于RDD来说,每个分片都会被一个计算任务处理,并决定并行计算的粒度。用户可以在创建RDD时指定RDD的分片个数,如果没有指定,那么就会采用默认值。默认值就是程序所分配到的CPU Core的数目。 (2)一个计算每个分区的函数。Spark中RDD的计算是以分片为单位的,每个RDD都会实现compute函数以达到这个目的。compute函数会对迭代器进行复合,不需要保存每次计算的结果。 (3)RDD之间的依赖关系。RDD的每次转换都会生成一个新的RDD,所以RDD之间就会形成类似于流水线一样的前后依赖关系。在部分分区数据丢失时,Spark可以通过这个依赖关系重新计算丢失的分区数据,而不是对RDD的所有分区进行重新计算。 (4)一个Partitioner

Kafka shell

自作多情 提交于 2019-11-29 11:59:17
Topic:可以理解为一个队列,生产者和消费者面向的都是一个 topic。 Partition:主要为了做负载,实现扩展性,一个非常大的 topic 可以分布到多个 broker(即服务器)上,一个 topic 可以分为多个 partition,每个 partition 是一个有序的队列。 一、topic 操作 # 查看当前服务器中的所有 topic kafka-topics.sh --zookeeper h136:2181 --list # 创建 topic,副本数不能超过节点数 kafka-topics.sh --zookeeper h136:2181 --create --replication-factor 3 --partitions 1 --topic first # 选项说明: # --topic:定义 topic 名 # --replication-factor:定义副本数 # --partitions:定义分区数 # 查看某个 Topic 的详情 bin/kafka-topics.sh --zookeeper h136:2181 --describe --topic first # 修改分区数 bin/kafka-topics.sh --zookeeper h136:2181 --alter --topic first --partitions 3 # 删除

Dynamic partition cannot be the parent of a static partition '3'

半城伤御伤魂 提交于 2019-11-29 11:46:54
While inserting data into table hive threw the error "Dynamic partition cannot be the parent of a static partition '3'" using below query INSERT INTO TABLE student_partition PARTITION(course , year = 3) SELECT name, id, course FROM student1 WHERE year = 3; Please explain the reason.. The reason of this Exception is because partitions are hierarchical folders. course folder is upper level and year is nested folders for each year. When you creating partitions dynamically, upper folder should be created first (course) then nested year=3 folder. You are providing year=3 partition in advance

Centos 7 利用LVM实现动态扩容(2):大于2T的磁盘使用GPT分区的方法

两盒软妹~` 提交于 2019-11-29 10:26:44
现在的数据在爆炸式增长,磁盘空间越来越大。 在Linux中,由于ext3文件系统不支持大于2TB的分区,所以要使用GPT分区格式。 可利用parted命令来完成分区。fdisk 只能分区小于2T的磁盘,大于2T就要用到parted。 先把大容量的磁盘进行转换,转换为GPT格式。由于GPT格式的磁盘相当于原来MBR磁盘中原来保留4个 partition table的4*16个字节只留第一个16个字节,其它的类似于扩展分区,真正的partition table在512字节之后,所以对GPT磁盘表来讲没有四个主分区的限制。 查看服务器磁盘信息:vdc是新增的大于2T的未分区的磁盘 [root@0026 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT vda 253:0 0 40G 0 disk ├─vda1 253:1 0 4G 0 part [SWAP] └─vda2 253:2 0 36G 0 part / vdb 253:16 0 60G 0 disk └─vdb1 253:17 0 60G 0 part ├─is-boot 252:0 0 528M 0 lvm /boot ├─is-opt 252:1 0 16G 0 lvm /opt ├─is-log 252:2 0 16G 0 lvm /srv/ftpd/log └─is

Linux磁盘扩容LVM

浪尽此生 提交于 2019-11-29 10:25:32
mongodb数据库服务器运行了一段时间之后发现磁盘空间慢慢的都被耗尽了额。就参照网上的步骤一步一步的开始扩容工作。在这将自己的操作步骤做一个记录以便未来不时之需。 前沿: 在安装系统的时候我选择的是自动分区,系统就会自动以LVM的方式分区。为了保证系统后期的可用性,建议所有新系统安装都采用LVM。 LVM结构图 扩容步骤 1. 查看磁盘设备 命令: # fdisk -l 结果: Disk /dev/sda: 697.9 GB, 697932185600 bytes 255 heads, 63 sectors/track, 84852 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00054716 Device Boot Start End Blocks Id System /dev/sda1 * 1 64 512000 83 Linux Partition 1 does not end on cylinder boundary . /dev/sda2 64 39163

kafka笔记

一笑奈何 提交于 2019-11-29 08:56:41
什么是Kafka Kafka是一款分布式消息发布和订阅系统,它的特点是高性能、高吞吐量。 最早设计的目的是作为LinkedIn的活动流和运营数据的处理管道。这些数据主要是用来对用户做用户画像分析以及服务器性能数据的一些监控所以kafka一开始设计的目标就是作为一个分布式、高吞吐量的消息系统,所以适合运用在大数据传输场景。 Kafka的应用场景 由于kafka具有更好的吞吐量、内置分区、冗余及容错性的优点(kafka每秒可以处理几十万消息),让kafka成为了一个很好的大规模消息处理应用的解决方案。所以在企业级应用长,主要会应用于如下几个方面 行为跟踪: kafka可以用于跟踪用户浏览页面、搜索及其他行为。通过发布-订阅模式实时记录到对应的topic中,通过后端大数据平台接入处理分析,并做更进一步的实时处理和监控 日志收集: 日志收集方面,有很多比较优秀的产品,比如Apache Flume,很多公司使用kafka代理日志聚合。日志聚合表示从服务器上收集日志文件,然后放到一个集中的平台(文件服务器)进行处理。在实际应用开发中,我们应用程序的log都会输出到本地的磁盘上,排查问题的话通过linux命令来搞定, 如果应用程序组成了负载均衡集群,并且集群的机器有几十台以上,那么想通过日志快速定位到问题,就是很麻烦的事情了

spark性能调优7 算子调优

与世无争的帅哥 提交于 2019-11-29 08:28:27
1。mappartions替换map提高性能 map算子的操作,在一个分区中,数据会一条一条进入函数内部 而mappartions则会把分区中所有数据都导入到函数执行 1、MapPartitions操作的优点: 如果是普通的map,比如一个partition中有1万条数据;ok,那么你的function要执行和计算1万次。 但是,使用MapPartitions操作之后,一个task仅仅会执行一次function,function一次接收所有的partition数据。只要执行一次就可以了,性能比较高。 2、MapPartitions的缺点: 如果是普通的map操作,一次function的执行就处理一条数据;那么如果内存不够用的情况下,比如处理了1千条数据了,那么这个时候内存不够了,那么就可以将已经处理完的1千条数据从内存里面垃圾回收掉,或者用其他方法,腾出空间来吧。 所以说普通的map操作通常不会导致内存的OOM异常。 但是MapPartitions操作,对于大量数据来说,比如甚至一个partition,100万数据,一次传入一个function以后,那么可能一下子内存不够,但是又没有办法去腾出内存空间来,可能就OOM,内存溢出。 3、什么时候比较适合用MapPartitions系列操作 就是说,数据量不是特别大的时候,都可以用这种MapPartitions系列操作

第4章 DDL数据定义

瘦欲@ 提交于 2019-11-29 07:06:38
第 4 章 DDL 数据定义 4.1 创建数据库 1 )创建一个数据库,数据库在 HDFS 上的默认存储路径是 /user/hive/warehouse/*.db 。 hive (default)> create database db_hive; 2 )避免要创建的数据库已经存在错误,增加 if not exists 判断。(标准写法) hive (default)> create database db_hive; FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Database db_hive already exists hive (default)> create database if not exists db_hive; 3 )创建一个数据库,指定数据库在 HDFS 上存放的位置 hive (default)> create database db_hive2 location '/db_hive2.db'; 4.2 查询数据库 4.2.1 显示数据库   1 .显示数据库 hive> show databases;   2 .过滤显示查询的数据库 hive> show databases like 'db_hive*'; OK db_hive

【原】Sql Server性能优化——Partition(管理分区)

别来无恙 提交于 2019-11-29 06:37:23
正如上一篇文章 SqlServer性能优化——Partition(创建分区) 中所述,分区并不是一个一劳永逸的操作,对一张表做好分区仅仅是开始,接下来可能需要频繁的变更分区,管理分区。 在企业管理器中,虽然有“管理分区”的菜单,里面的内容却可能与你的预想不同,这里并没有提供直接对分区进行操作的方法,所以一些普通的操作,比如“ 增加分区 ”、“ 删除分区 ”之类的操作就需要通过脚本实现了。 增加分区(Split Partition) “ 增加分区 ”事实上就是将现有的分区分割开,基于此,在SQL Server中应用的是Split操作。在 分离分区 的时候,不仅仅要在Partition Function上指定分割的分界点,同样需要在Partition Scheme上指定新分区应用的文件组: --指定下一个分区应用文件组PRIMARY ALTER PARTITION SCHEME [MyPartitionSchema] NEXT USED [PRIMARY] --指定分区分界点为5000 ALTER PARTITION FUNCTION MyPartitionFunction() SPLIT RANGE (5000) 需要注意的一点是, 新增的分区中非聚簇索引的压缩模式会被置为None 。 删除分区(Merge Partition) “ 删除分区

Reactor Kafka

女生的网名这么多〃 提交于 2019-11-29 06:20:24
Reactor Kafka官方指导地址: https://projectreactor.io/docs/kafka/milestone/reference/ 依赖 <dependency> <groupId>io.projectreactor.kafka</groupId> <artifactId>reactor-kafka</artifactId> <version>1.1.1.RELEASE</version> </dependency> producer public void producer(String topic, String value){ Map<String, Object> producerProps = new HashMap<>(); producerProps.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "127.0.0.1:9092"); SenderOptions<String, String> senderOptions = SenderOptions.<String, String>create(producerProps) .withKeySerializer(new StringSerializer()) .withValueSerializer(new StringSerializer());