
大数据
文章平均质量分 59
乖乖猪001
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ClickHouse 内核分析--MergeTree 的存储结构和查询加速
ClickHouse 内核分析–MergeTree 的存储结构和查询 加速ClickHouse 是最近比较火的一款开源列式存储分析型数据库,它最核心的特点就是极致存储压缩率和查询性能,本人最近正在学习 ClickHouse 这款产品中。从我个人的视角来看存储是决定一款数据库核心竞争力、 适用场景的关键所在,所以接下来我会陆续推出一系列文章来分析 ClickHouse 中最重要的 MergeTree 存储 内核。本文主旨在于介绍 MergeTree 的存储格式,并且彻底剖析 MergeTree 存储的极致原创 2021-04-16 14:23:24 · 538 阅读 · 0 评论 -
Clickhouse 架构设计
Clickhouse 架构设计Column 与 FieldColumn 和 Field 是 ClickHouse 数据最基础的映射单元。作为一款百分之百的列式存储数据库,ClickHouse 按列存储数据,内存中的一列数据由一个 Column 对象表示。Column 对象分为接口和实现 两个部分,在 IColumn接口对象中,定义了对数据进行各种关系运算的方法,例如插入数据的 insertRangeFrom 和 insertFrom 方法、用于分页的 cut,以及用于过滤的 filter 方法等。原创 2021-04-16 14:05:47 · 411 阅读 · 0 评论 -
Clickhouse引擎四: 内存引擎
Clickhouse引擎四: 内存引擎表引擎,都是面向内存查询的,数据会从内存中被直接访问,所以它们被归纳为内存类型。但这并不意味着内存类表引擎不支持物理存储,事实上,除了 Memory 表引擎之外,其 余的几款表引擎都会将数据写入磁盘,这是为了防止数据丢失,是一种故障恢复手段。而在数据表被 加载时,它们会将数据全部加载至内存,以供查询之用。将数据全量放在内存中,对于表引擎来说是 一把双刃剑:一方面,这意味着拥有较好的查询性能;而另一方面,如果表内装载的数据量过大,可 能会带来极大的内存消耗和负担!M原创 2021-04-16 13:54:00 · 785 阅读 · 0 评论 -
Clickhouse引擎三: 外部存储引擎
Clickhouse引擎二: 外部存储引擎HDFSClickhouse 可以直接从 HDFS 中指定的目录下加载数据 , 自己根本不存储数据, 仅仅是读取数据 ENGINE = HDFS(hdfs_uri,format) ·hdfs_uri 表示 HDFS 的文件存储路径; ·format 表示文件格式(指 ClickHouse 支持的文件格式,常见的有 CSV、TSV 和 JSON 等)。 注意的是 HDFS 引擎在处理数据的时候分为两种处理方式:1 可以读写 HDFS 上的数据在建表的时候指定H原创 2021-04-16 13:45:44 · 685 阅读 · 0 评论 -
Clickhouse引擎二: MergeTree 家族引擎
Clickhouse引擎二: MergeTree 家族引擎MergeTree 系列的表引擎是 ClickHouse 数据存储功能的核心。它们提供了用于弹性和高性能数据检索的大多数功能:列存储,自定义分区,稀疏的主索引,辅助数据跳过索引等。 基本 MergeTree 表引擎可以被认为是单节点 ClickHouse 实例的默认表引擎,因为它在各种用例中通用 且实用。除了基础表引擎 MergeTree 之 外,常用的表引擎还有 ReplacingMergeTree、SummingMergeTree、Agg原创 2021-04-16 13:38:57 · 497 阅读 · 0 评论 -
Clickhouse引擎一: Log 系列引擎
Clickhouse引擎一: Log 系列引擎Log 家族具有最小功能的轻量级引擎。当您需要快速写入许多小表(最多约 100 万行)并在以后整体 读取它们时,该类型的引擎是最有效的。TinyLog 引擎最简单的表引擎,用于将数据存储在磁盘上。每列都存储在单独的压缩文件中,写入时,数据将 附加到文件末尾。该引擎没有并发控制 - 只支持并发读 - 如果同时从表中读取和写入数据,则读取操作将抛出异常; - 如果同时写入多个查询中的表,则数据将被破坏。这种表引擎的典型用法是 write-once:首先只写原创 2021-04-16 11:53:06 · 388 阅读 · 0 评论 -
Clickhouse基本概念
Clickhouse 系统架构ClickHouse 拥有完备的管理功能,所以它称得上是一个 DBMS(Database Management System,数据库管理系统),而不仅是一个数据库。作为一个 DBMS,它具备了一些基本功能,如下所示。·DDL(数据定义语言):可以动态地创建、修改或删除数据库、表和视图,而无须重启服务。 ·DML(数据操作语言):可以动态查询、插入、修改或删除数据。 ·权限控制:可以按照用户粒度设置数据库或者表的操作权限,保障数据的安全性。 ·数据备份与恢复:提供了数据备份原创 2021-04-16 11:40:29 · 573 阅读 · 0 评论 -
Clickhouse简介
Clickhouse简介ClickHouse 是俄罗斯的 Yandex 于 2016 年开源的一个用于联机分析(OLAP:Online AnalyticalProcessing) 的列式数据库管理系统(DBMS:Database Management System) , 主要用于在线分析处理查询(OLAP),能够 使用 SQL 查询实时生成分析数据报告。 ClickHouse 的全称是 Click Stream,Data WareHouse,简称 ClickHouse。ClickHouse 是一个完全原创 2021-04-15 13:24:47 · 496 阅读 · 0 评论 -
Flink停止任务并保存savepoint
线上作业会有需求需要改动的时候, 希望不要丢失数据的进行需求迭代。注意:这中线上的任务迭代最好在数据量低谷的时候进行,对任务造成的影响最小。需要用到一下命令:flink取消任务并保存savepointflink cancel -s hdfs:///flink/flink-savepoints/20210326/11 【flink-job-id】 -yid 【application-id】 再次执行启动,加上savepoint地址:flink run \-d \-p 20 \原创 2021-04-15 11:35:11 · 3553 阅读 · 1 评论 -
Spark参数调优
spark.yarn.executor.memoryOverhead设置堆外内存,当出现超出物理内存使用,被yarn杀死的情况是,需要合理设置这个值,一般设置2G够用了spark.sql.shuffle.partitionssparksql的shuffle默认的并行度只有200,要想提高并行度,则需要调大这个值,以避免资源浪费或者单个task处理过大的数据,建议设置为总core的三倍spark.sql.adaptive.enabled开启自适应机制,建议为truespark.sq..原创 2021-01-06 09:47:24 · 1025 阅读 · 0 评论 -
Spark读取Mysql性能优化
spark读取MySQL默认的并行度只有1,即使手动指定了并行度numPartitions,也不会生效,这在读取大表的时候会成为性能瓶颈想要提高并行度读取MySQL,则需要获取到该表主键的上下界,然后指定numPartitions,程序就会按照设置的并行度均匀拆分,每个task会去并行读取拆分后的数据,实现方法如下所示:import org.apache.spark.sql.SparkSessionimport scalikejdbc.{ConnectionPool, ConnectionPoolSe原创 2021-01-06 09:44:18 · 1039 阅读 · 0 评论 -
Kylin部署问题记录
1.执行$KYLIN_HOME/bin/check-env.sh错误内容:找不到 hive-site.xml 文件根本原因:check-env的过程中执行的是以下脚本:find-hadoop-conf-dir.sh,find-hbase-dependency.sh,find-hive-dependency.sh,find-kafka-dependency.sh等,执行find-hive-dependency.sh时报出找不到 hive-site.xml 文件,搜索EMR集群文件,没有hive-site原创 2021-01-05 15:41:54 · 251 阅读 · 0 评论 -
KedProcessFunction实现窗口定时计算
一、EventTime// 数据进过清洗过滤后生成水位线val ds=env.addSource(consumer) .map(x=>{ val s=x.split(",") AdData(s(0).toInt,s(1),s(2).toLong) }).assignTimestampsAndWatermarks(new BoundedOutOfOrdernessTimestampExtractor[AdData](Time.minutes(1原创 2021-01-05 15:37:28 · 229 阅读 · 0 评论 -
Flink:定时加载维表
业务背景:原先有大量数据会去从redis中查询,造成频繁的连接和查询,而且redis中的数据量很小,因此可以采用定时加载维表,将数据加载进每个subtask中。code:class CommercialAdvRichMapFunction(redisHost: String, redisPass: String) extends RichMapFunction[Source, Data] { private val logger: Logger = LoggerFactory.getLogger(t原创 2021-01-05 15:34:21 · 1761 阅读 · 0 评论 -
触发器Trigger与剔除器Evictor
一、Trigger窗口的计算是依赖触发器进行的,每种类型的窗口都有自己的触发器机制,如果用户没有指定,那么会使用默认的触发器。EventTimeTrigger:通过对比 Watermark 和窗口的 Endtime 确定是否触发窗口计算,如果 Watermark 大于 Window EndTime 则触发,否则不触发,窗口将继续等待。ProcessTimeTrigger:通过对比 ProcessTime 和窗口 EndTime 确定是否触发窗口,如果 ProcessTime 大于 EndTime 则原创 2021-01-05 15:31:55 · 557 阅读 · 0 评论 -
spark写入hbase任务报错:NoClassDefFoundError: com/yammer/metrics/Metrics
处理方式是在habse-home中找到metrics-core-2.2.0.jar,然后copy至spark-home/jars目录下,spark-home/jars目录有一个metrics-core的jar,版本不是2.2.0,可以忽略。原创 2020-12-07 09:50:52 · 665 阅读 · 0 评论 -
Spark避免小文件
SQL-Clientselect * from table1distribute by rand();select /+ REPARTITION(200) / a. from table1 a;select /+ COALESCE(200) / a. from table1 a;API用 coalesce或者repartition,num=(1.0*(df.count())/7000000).ceil.toIntdf.coalesce(num)df.repartition(.原创 2020-09-25 11:25:25 · 554 阅读 · 0 评论 -
Flink写入HDFS(文本,parquet,parquet+snappy)
flink版本:1.10.0code: // 构建env环境 val env = StreamExecutionEnvironment.getExecutionEnvironment env.enableCheckpointing(1000*60) //1000*60 s一个checkpoint env.getCheckpointConfig.setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE) env.setSt原创 2020-08-20 13:40:30 · 4290 阅读 · 12 评论 -
Solr+Hbase+Hbase Indexer查询方案流程整合(转载)
转载:https://blog.youkuaiyun.com/qq_34842671/article/details/86496983 概述亿级数据多条件组合查询——秒级响应解决方案简述了Hbase+Solr的亿级数据多条件组合查询的解决方案,但是当时并未转载 2020-05-27 11:15:23 · 299 阅读 · 0 评论 -
大数据面试题(附答案,持续更新...)
说说对hadoop的理解,都有哪些组件,分别是干什么的还了解大数据其他组件嘛?kafka在什么地方需要用到zookeeper了解HBase吗?说下spark中的transform和action为什么spark要把操作分为transform和actionspark中有了RDD,为什么还要有Dataframe和DataSet?了解函数式编程吗?说下c/c++和scala这种函数式编程语...原创 2020-04-28 15:42:18 · 9702 阅读 · 2 评论 -
ClickHouse中文文档
官网:https://clickhouse.tech/中文文档:https://clickhouse.tech/docs/zh/原创 2020-04-15 16:08:56 · 752 阅读 · 0 评论 -
Hive的mapjoin原理与参数说明
一、 Map Join原理Map Join介绍MapJoin顾名思义,就是在Map阶段进行表之间的连接,map阶段直接拿另外一个表的数据和内存中表数据做匹配。而不需要进入到Reduce阶段才进行连接。这样就节省了在Shuffle阶段时要进行的大量数据传输。从而起到了优化作业的作用。通常用于一个很小的表和一个大表进行join的场景。MapJoin的原理及过程执行过程如上图:首先是在...原创 2020-04-01 14:40:55 · 6071 阅读 · 0 评论 -
星星模型&&雪花模型
在多维分析的商业智能解决方案中,根据事实表和维度表的关系,可将常见的模型分为星型模型和雪花型模型。在设计逻辑型数据的模型的时候,就应考虑数据是按照星型模型还是雪花型模型进行组织。星型模型当所有维表都直接连接到“ 事实表”上时,整个图解就像星星一样,故将该模型称为星型模型。星型架构是一种非正规化的结构,多维数据集的每一个维度都直接与事实表相连接,不存在渐变维度,所以数据有一定的冗余,如在...原创 2018-12-22 21:55:58 · 823 阅读 · 0 评论 -
HBase的shell命令
HBase命名空间://1.创建一个命名空间:"test"hbase(main):001:0> create_namespace 'test'//2.查看命名空间:"test"hbase(main):003:0> describe_namespace 'test'//3.列举出所有的命名空间hbase(main):004:0> list_namespace ...原创 2019-04-12 11:22:44 · 180 阅读 · 0 评论 -
CDH各个版本下载&&组件版本
https://www.cloudera.com/documentation/enterprise/release-notes/topics/rg_cdh_vd.html原创 2019-04-04 13:19:02 · 11008 阅读 · 0 评论 -
Kylin2.5.2完全分布式安装部署
Kylin介绍: 关于Kylin的简介网上资料有很多,就不做过多的赘述了,这里给一个中文链接: http://kylin.apache.org/cn/搭建步骤:1,安装Hadoop,Zookeeper,HBase,Hive &a原创 2019-02-26 18:56:57 · 1316 阅读 · 0 评论 -
Hive整合HBase
版本如下:hadoop-2.7.2zookeeper-3.4.6hive1.2.1hbase-1.2.11Hive整合Hbase,其实原理非常简单,因为hive实际存储也是存储在HDFS上,HBase的存储也是依赖于HDFS的,所以实际上还是做了表的维护,也就是元数据的构建,数据本身一直是在HDFS的。1、修改hive-site.xml文件,是在hive的conf目录下<pro...原创 2019-03-01 14:30:21 · 222 阅读 · 0 评论 -
大数据面试题总结
1、fsimage和edit的区别? 大家都知道namenode与secondary namenode 的关系,当他们要进行数据同步时叫做checkpoint时就用到了fsimage与edit,fsimage是保存最新的元数据的信息,当fsimage数据到一定的大小事会去生成一个新的文件来保存元数据的信息,这个新的文件就是edit,edit会回滚最新的...转载 2019-01-01 23:24:53 · 358 阅读 · 0 评论 -
org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block:
防火墙记得关掉;查看DataNode是否启动;有些数据块是损坏了,可以命令查看hadoop fsck <path>然后可以删除损坏的数据块hadoop fsck <path> -deletehadoop fsck其他参数解释: <path> start checking from this path -move m...原创 2019-04-03 16:54:19 · 8317 阅读 · 2 评论 -
云主机内存buff/cache占用过多的问题
云主机使用过程中,可用内存不足,查看了下内存,没想到free的内存已经这么点了。。。看到大部分内存都被buff/cache了物理机其实没有这样的问题,一般都是虚拟机出现这样的问题。解决方式如下:echo 1 > /proc/sys/vm/drop_cachesecho 2 > /proc/sys/vm/drop_cachesecho 3 > /proc/sys/vm...原创 2019-04-09 16:43:22 · 989 阅读 · 0 评论 -
kylin加载hbas的协处理器(坑)
版本:CDH: 5.13Kylin: 2.5.2在project、model、cube构建完成后,开始查询,结果因为之前做了Hadoop的HA,所以需要更新HBase的协处理器。这个是执行查询的时候报的错:org.apache.hadoop.hbase.exceptions.UnknownProtocolException: org.apache.hadoop.hbase.exce...原创 2019-04-15 13:59:13 · 1516 阅读 · 0 评论 -
Kylin优化实战(二):cube构建过程
根据cube在build的顺序,进行优化#1 Step Name: Create Intermediate Flat Hive Table第一步是根据我们自定义的cube模型来生成原始数据,直接使用hive -e执行sql语句,中间设置了大量的hive的配置项,数据格式默认为SEQUENCEFILE。#2 Step Name: Redistribute Flat Hive Table...原创 2019-06-12 15:42:46 · 1200 阅读 · 1 评论 -
Linux中开启VNC服务
多数情况下,我们会使用各种SSH来完成对Linux的操作。但若是想远程访问图形界面又该怎么做呢?在这里,将使用VNC完成远程访问服务器的图形界面。 准备工作:1. Centos7的环境2. VNC Viewer客户端 ,可以让用户远程访问服务器的桌面环境。下载地址https://www...转载 2019-06-06 17:30:02 · 2087 阅读 · 0 评论 -
Kylin:Cube设计与优化
Apache Kylin™是一个开源的分布式分析引擎,提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc. 开发并贡献至开源社区。它能在亚秒内查询巨大的Hive表。下面是Kylin的架构图: &nbs...原创 2019-09-18 15:28:20 · 601 阅读 · 0 评论 -
HAWQ取代传统数仓实践(二)——搭建示例模型(MySQL、HAWQ)
一、业务场景 本系列实验将应用HAWQ数据库,为一个销售订单系统建立数据仓库。本篇说明示例的业务场景、数据仓库架构、实验环境、源和目标库的建立过程、测试数据和日期维度的生成。后面陆续进行初始数据装载、定期数据装载、调度ETL工作流自动执行、维度表技术、事实表技术、OLAP和数据可视化等实验。目的是演示以HAWQ...转载 2019-01-05 19:19:07 · 627 阅读 · 0 评论 -
Spark Streaming的背压机制(类比Storm雪崩)
默认情况下,SparkStremaing根据Receiver以生产者生产数据的速度来接收数据,但是在工作状态下, 实际计算一个批次数据的时间一般要大于Streaming应用设置的批处理间隔。这就意味着Spark Streaming处理数据的速度要小于数据接收的速度, 数据处理能力低,导致数据全部堆积在内存中,进一步...原创 2018-12-26 12:55:55 · 2025 阅读 · 0 评论 -
Spark Streaming连接Flume的两种方式
Spark提供了两种不同的接收器来接受Flume端发送的数据。 推式接收器该接收器以 Avro 数据池的方式工作,由 Flume 向其中推数据。设置起来非常简单,我们只需要将Fluem简单配置下,将数据发送到Avro数据池中,然后scala提供的FlumeUtils代理对象会把接收器配置在一个特定的工作节点的主机名和端口上。当然,这些配置需要和Flume保持一致...原创 2018-12-26 12:27:17 · 420 阅读 · 0 评论 -
使用hive来分析flume收集的json日志数据
http://www.aboutyun.com/thread-12040-1-1.html转载 2018-12-28 23:12:13 · 2008 阅读 · 0 评论 -
flume 1.8 安装部署
环境centos:7.2JDK:1.8Flume:1.8一、Flume 安装1) 下载wget http://mirrors.tuna.tsinghua.edu.cn/apache/flume/1.8.0/apache-flume-1.8.0-bin.tar.gz2)&n...转载 2018-12-28 22:35:14 · 307 阅读 · 0 评论 -
Scala:数据结构
1、编写一段代码,将a设置为一个n个随机整数的数组,要求随机数介于0和n之间。scala> def makeArr(n : Int) : Array[Int] = { | val a = new Array[Int](n); | val rand = new scala.util.Random(); | for (i <- a) ...原创 2018-12-28 20:41:05 · 436 阅读 · 0 评论