Ying

个人博客:http://smartsi.club/

排序:
默认
按更新时间
按访问量

Hadoop Yarn上的调度器

1. 引言Yarn在Hadoop的生态系统中担任了资源管理和任务调度的角色。在讨论其构造器之前先简单了解一下Yarn的架构。上图是Yarn的基本架构,其中 ResourceManager 是整个架构的核心组件,负责集群上的资源管理,包括内存、CPU以及集群上的其他资; ApplicationMas...

2018-05-10 09:47:29

阅读数:202

评论数:0

Spark内部原理之运行原理一

原文来源于:Spark内部原理之运行原理一在大数据领域,只有深挖数据科学领域,走在学术前沿,才能在底层算法和模型方面走在前面,从而占据领先地位。Spark的这种学术基因,使得它从一开始就在大数据领域建立了一定优势。无论是性能,还是方案的统一性,对比传统的 Hadoop,优势都非常明显。Spark ...

2018-03-15 14:10:54

阅读数:211

评论数:0

Flink1.4 用于外部数据访问的异步IO

原文来源:Flink1.4 用于外部数据访问的异步IO1. 异步IO操作的必要性当与外部系统交互时(例如,使用存储在数据库中数据丰富流事件),需要注意与外部系统的通信延迟并不决定流应用程序的整体工作。访问外部数据库中的数据(例如在 MapFunction 中)通常意味着同步交互:将请求发送到数据库...

2018-03-07 09:49:38

阅读数:153

评论数:0

Stream 分布式数据流的轻量级异步快照

原文来源:Stream 分布式数据流的轻量级异步快照1. 概述分布式有状态流处理支持在云中部署和执行大规模连续计算,主要针对低延迟和高吞吐量。这种模式的一个最根本的挑战就是在可能的失败情况下提供处理保证。现有方法依赖于可用于故障恢复的周期性全局状态快照。这些方法有两个主要缺点。首先,他们经常拖延影...

2018-03-07 09:46:21

阅读数:294

评论数:0

Flink1.4 窗口触发器与Evictors

原文来源于:Flink1.4 窗口触发器与Evictors1. 窗口触发器触发器(Trigger)决定了窗口(请参阅窗口概述)博文)什么时候准备好被窗口函数处理。每个窗口分配器都带有一个默认的 Trigger。如果默认触发器不能满足你的要求,可以使用 trigger(...) 指定自定义的触发器。...

2018-03-05 09:47:18

阅读数:165

评论数:0

Flink1.4 HDFS Connector

原文来源于:Flink1.4 HDFS Connector此连接器提供一个 Sink,将分区文件写入 Hadoop FileSystem 支持的任何文件系统。要使用此连接器,添加以下依赖项:<dependency> <group...

2018-03-05 09:42:45

阅读数:171

评论数:0

Hadoop Trash回收站使用指南

我们在删除一个文件时,遇到如下问题,提示我们不能删除文件放回回收站:sudo -uxiaosi hadoop fs -rm -r tmp/data_group/test/employee/employee_salary.txt17/12/06 16:34:48 INFO fs.TrashPolic...

2017-12-22 09:37:49

阅读数:533

评论数:0

[算法系列]算法一 地理空间距离计算优化

1. 地理空间距离计算面临的挑战打开美团app,不管是筛选团购还是筛选商家,默认的排序项都是“离我最近”或者“智能排序”(如下图所示):不管是“离我最近”还是“智能排序”,都涉及到计算用户位置与各个团购单子或者商家的距离(注:在智能排序中距离作为一个重要的参数参与排序打分)。以筛选商家为例,北京地...

2017-11-15 09:52:55

阅读数:628

评论数:0

[Flink]Flink1.3 Stream指南八 图解事件时间与Watermarks

如果你正在构建实时流处理应用程序,那么事件时间处理是你迟早必须使用的功能之一。因为在现实世界的大多数用例中,消息到达都是无序的,应该有一些方法,通过你建立的系统知道消息可能延迟到达,并且有相应的处理方案。在这篇博文中,我们将看到为什么我们需要事件时间处理,以及我们如何在ApacheFlink中使用...

2017-10-29 18:54:20

阅读数:761

评论数:0

[Flink]Flink1.3 Stream指南七 理解事件时间与Watermarks

Flink实现了数据流模型(Dataflow Model)中许多技术。如果想对事件时间(event time)和水位线(watermarks)更详细的了解,请参阅下面的文章:The world beyond batch: Streaming 101The Dataflow Model支持事件时间的...

2017-10-29 18:52:23

阅读数:972

评论数:0

[Flink]Flink1.3 Stream指南六 事件时间与处理时间

Flink在数据流中支持几种不同概念的时间。1. 处理时间 Processing TimeProcessing Time(处理时间)是指执行相应操作机器的系统时间(Processing time refers to the system time of the machine that is ex...

2017-10-27 12:04:31

阅读数:803

评论数:0

[Flink]Flink1.3 Stream指南五 窗口触发器与驱逐器

1. 窗口触发器触发器(Trigger)确定窗口(由窗口分配器形成)何时准备好被窗口函数处理。每个窗口分配器都带有默认触发器。如果默认触发器不满足你的要求,可以使用trigger(...)指定自定义触发器。触发器接口有五种方法允许触发器对不同的事件做出反应:public abstract Trig...

2017-10-25 18:50:21

阅读数:887

评论数:0

[Flink]Flink1.3 Stream指南四 窗口函数

1.4版本:Flink1.4 窗口函数在定义窗口分配器之后,我们需要在每个窗口上指定我们要执行的计算。这是窗口函数的责任,一旦系统确定窗口准备好处理数据,窗口函数就处理每个窗口中的元素。窗口函数可以是ReduceFunction,FoldFunction或WindowFunction其中之一。前两...

2017-10-24 14:22:02

阅读数:825

评论数:0

[Flink]Flink1.3 Batch指南二 集群运行

Flink程序可以分布在许多机器的群集上。有两种方式可以将程序发送到集群上运行: (1) 命令行接口 (2) 远程环境1. 命令行接口命令行接口允许你将打包程序(JAR)提交到集群(或单机配置)。详细请参阅[Flink]Flink1.3 指南四 命令行接口。2. 远程环境远程环境允许你直接在集群上...

2017-10-24 11:54:56

阅读数:354

评论数:0

[Flink]Flink1.3 Stream指南三 窗口分配器

1.4版本:Flink1.4 窗口概述Windows(窗口)是处理无限数据流的核心。Windows将流分解成有限大小的"桶",在上面我们可以进行计算。本文档重点介绍如何在Flink中处理窗口,以及如何从它提供的功能中获得最大的收益。窗口Flink程序的一般结构如...

2017-10-24 11:11:36

阅读数:501

评论数:0

[Flink]Flink1.3 指南五 指定keys

一些转换(例如,join,coGroup,keyBy,groupBy)要求在一组元素上定义一个key。其他转换(Reduce,GroupReduce,Aggregate,Windows)允许在使用这些函数之前对数据进行分组。一个DataSet进行分组如下:DataSet input = // [....

2017-10-23 19:21:31

阅读数:585

评论数:0

[Flink]Flink1.3 指南四 命令行接口

Flink提供了一个命令行接口(CLI)用来运行打成JAR包的程序,并且可以控制程序的运行。命令行接口在Flink安装完之后即可拥有,本地单节点或是分布式的部署安装都会有命令行接口。命令行接口启动脚本是 $FLINK_HOME/bin目录下的flink脚本, 默认情况下会连接运行中的Flink m...

2017-10-23 10:43:59

阅读数:1167

评论数:0

[Flink]Flink1.3 Batch指南一 本地运行

Flink可以在单台机器上运行,甚至可以在单个Java虚拟机中运行。 这运行机制可以方便用户在本地测试和调试Flink程序。本节概述了Flink的本地执行机制。本地环境和执行器(executors)允许你可以在本地Java虚拟机上运行Flink程序,或者是在正在运行程序的Java虚拟机上(with...

2017-10-23 09:35:47

阅读数:838

评论数:0

[Flink]Flink1.3 指南二 安装与启动

1. 下载Flink 可以运行在 Linux, Mac OS X和Windows上。为了运行Flink, 唯一的要求是必须在Java 7.x (或者更高版本)上安装。Windows 用户, 请查看 Flink在Windows上的安装指南。你可以使用以下命令检查Java当前运行的版本:java -v...

2017-10-18 19:22:55

阅读数:1263

评论数:0

[Hive]Hive使用指南七 空值与NULL

1. NULL(null)值创建一个临时表tmp_null_empty_test,并插入一些NULL数据:CREATE TABLE IF NOT EXISTS tmp_null_empty_test( uid string ) ROW FORMAT DELIMITED FIELDS TERM...

2017-10-18 19:19:11

阅读数:3183

评论数:0

[ElasticSearch]ElasticSearch,Kibana安装与启动

1. 检查JDK版本使用如下命令检验JDK版本:xiaosi@Qunar:~$ java -version java version "1.7.0_40" Java(TM) SE Runtime Environment (build 1.7.0_40-b43) Java Hot...

2017-10-16 10:36:53

阅读数:649

评论数:0

[Maven]maven-shade-plugin使用指南

1. Selecting Contents for Uber JAR下面的POM代码段显示了如何控制在uber JAR中应该包含/排除哪些项目依赖关系:project> ... build> plugins> plugin> gr...

2017-08-29 09:54:27

阅读数:738

评论数:0

[Scala]Scala学习笔记十 模式匹配

Scala有一个十分强大的模式匹配机制.可以应用在很多场合:switch语句,类型检查等等.此外Scala还提供了样例类,对模式匹配进行了优化.1. 更好的switch如下是Scala中C风格switch语句的等效代码:var sign = 2 val ch = '+' ch match { ...

2017-08-17 10:07:57

阅读数:427

评论数:0

[Scala]Scala学习笔记九 提取器

1. apply和update方法Scala允许你使用如下函数调用语法:f(arg1, arg2, ...) 扩展到可以应用于函数之外的值.如果f不是函数或方法,那么这个表达式就等同于调用:f.apply(arg1, arg2, ...) 如果它出现在赋值语句的等号左侧:f(arg1, arg2,...

2017-08-16 19:51:34

阅读数:442

评论数:0

[Guava]Throwables:简化异常和错误的传播与检查

1. 异常传播有时候,你会想把捕获到的异常再次抛出。这种情况通常发生在 Error 或 RuntimeException 被捕获的时候,你没想捕获它们,但是声明捕获 Throwable 和 Exception 的时候,也包括了了 Error 或 RuntimeException。Guava 提供了...

2017-08-14 20:28:30

阅读数:654

评论数:0

[Scala]Scala学习笔记八 高阶函数

Scala混合了面向对象和函数式的特性.在函数式编程语言中,函数可以像任何其他数据类型一样被传递和操作.如果想要给算法传入明细动作时,只需要将明细动作包在函数当中作为参数传入即可.1. 作为值的函数在Scala中,函数就和数字一样,可以在变量中存放:import scala.math._ val...

2017-08-11 13:33:14

阅读数:439

评论数:0

[Scala]Scala学习笔记七 正则表达式

1. Regex对象我们可以使用scala.util.matching.Regex类使用正则表达式.要构造一个Regex对象,使用String类的r方法即可:val numPattern = "[0-9]+".r 如果正则表达式包含反斜杠或引号的话,那么最好使用"原始...

2017-08-08 10:15:54

阅读数:454

评论数:0

[AirFlow]AirFlow使用指南四 DAG Operator Task

1. DAG在Airflow中,DAG或有向无环图是你运行所有任务的集合,以某种组织方式来反映所有任务之间的关系和依赖。例如,一个简单的DAG可以包括三个任务:A,B和C.可以说A必须在B运行之前成功运行,但C可以随时运行。 可以说任务A在5分钟后超时,为防止失败,B可以最多重启5次。也可以说工作...

2017-08-03 20:02:28

阅读数:2813

评论数:1

[AirFlow]AirFlow使用指南三 第一个DAG示例

经过前两篇文章的简单介绍之后,我们安装了自己的AirFlow以及简单了解了DAG的定义文件.现在我们要实现自己的一个DAG.1. 启动Web服务器使用如下命令启用:airflow webserver 现在可以通过将浏览器导航到启动Airflow的主机上的8080端口来访问Airflow UI,例如...

2017-08-03 12:00:25

阅读数:8298

评论数:5

[AirFlow]AirFlow使用指南二 DAG定义文件

1. Example""" Code that goes along with the Airflow tutorial located at: https://github.com/airbnb/airflow/blob/master/airflow/example...

2017-08-03 11:57:13

阅读数:3748

评论数:0

[AirFlow]AirFlow使用指南一 安装与启动

1. 安装通过pip安装:xiaosi@yoona:~$ pip install airflow 如果速度比较慢,可以使用下面提供的源进行安装:xiaosi@yoona:~$ pip install -i https://pypi.tuna.tsinghua.edu.cn/simple airfl...

2017-08-02 18:23:30

阅读数:2460

评论数:5

[Shell]bash的良好编码实践

最好的bash脚本不仅可以工作,而且以易于理解和修改的方式编写。很多好的编码实践都是来自使用一致的变量名称和一致的编码风格。验证用户提供的参数是否正确,并检查命令是否能成功运行,以及长时间运行是否能保持可用性。下面分享一下我的工作技巧。1. 使用良好的缩进使用良好的缩进能使代码可读性更好,从而能更...

2017-08-02 15:51:24

阅读数:550

评论数:0

[Scala]Scala学习笔记六 文件

1. 读取行读取文件,可以使用scala.io.Source对象的fromFile方法.如果读取所有行可以使用getLines方法:val source = Source.fromFile("/home/xiaosi/exception.txt", "UTF-8&qu...

2017-08-02 12:09:01

阅读数:457

评论数:0

[Scala]Scala学习笔记五 Object

1. 单例对象Scala没有静态方法或静态字段,可以使用object来达到这个目的,对象定义了某个类的单个实例:object Account{ private var lastNumber = 0 def newUniqueNumber () = {lastNumber += 1; las...

2017-07-31 12:04:32

阅读数:341

评论数:0

[Scala]Scala学习笔记四 类

1. 简单类与无参方法class Person { var age = 0 // 必须初始化字段 def getAge() = age // 方法默认为公有的 } 备注在Scala中,类并不声明为public. Scala源文件可以包含多个类,所有这些类都具有公有可见性.属性不声明默认为p...

2017-07-31 12:03:11

阅读数:422

评论数:0

[Scala]Scala学习笔记三 Map与Tuple

1. 构造映射可以使用如下命令构造一个映射:scala> val scores = Map("Alice" -> 90, "Kim" -> 89, "Bob"-> 98) scores: scala.collect...

2017-07-26 11:02:07

阅读数:440

评论数:0

[Git]Git指南一 查看创建删除标签

1. 查看标签列出现有标签,使用如下命令:xiaosi@yoona:~/code/learningnotes$ git tag r-000000-000000-cm.cm v1.0.0 v1.0.1 我们可以用特定的搜索模式列出符合条件的标签。如果只对1.0系列的版本感兴趣,可以运行如下命令:x...

2017-07-25 14:46:45

阅读数:922

评论数:0

[Scala]Scala学习笔记二 数组

1. 定长数组如果你需要一个长度不变的数组,可以使用Scala中的Array.val nums = new Array[Int](10) // 10个整数的数组 所有元素初始化为0 val strs = new Array[String](10) // 10个字符串的数组 所有元素初始化为null...

2017-07-25 13:41:57

阅读数:379

评论数:0

[Scala]Scala学习笔记一 基础

1. 变量val定义的值实际上是一个常亮,无法改变其内容 scala> val num = 0 num: Int = 0 scala> num = 2 :12: error: reassignment to val num = 2 ^ 如果要声明...

2017-07-24 20:27:45

阅读数:319

评论数:0

[Hive]HiveServer2配置

HiveServer2(HS2)是一个服务器接口,能使远程客户端执行Hive查询,并且可以检索结果。HiveServer2是HiveServer1的改进版,HiveServer1已经被废弃。HiveServer2可以支持多客户端并发和身份认证。旨在为开放API客户端(如JDBC和ODBC)提供更好...

2017-07-18 19:23:16

阅读数:2443

评论数:0

[Hive]HiveServer2概述

1. HiveServer1HiveServer是一种可选服务,允许远程客户端可以使用各种编程语言向Hive提交请求并检索结果。HiveServer是建立在Apache ThriftTM(http://thrift.apache.org/) 之上的,因此有时会被称为Thrift Server,这可...

2017-07-18 19:22:06

阅读数:1793

评论数:0

[Mvel]Mvel2.0使用指南一 基础

MVEL在很大程度上受到Java语法的启发,作为一个表达式语言,也有一些根本的区别,旨在更高的效率,例如:直接支持集合、数组和字符串匹配等操作以及正则表达式。 MVEL用于执行使用Java语法编写的表达式。除了表达语言之外,MVEL还可用作配置和字符串构造的模板语言。MVEL2.x表达式包含以下部...

2017-07-17 15:22:32

阅读数:4374

评论数:0

[Redis]Redis指南二 配置

我们可以通过redis-server的启动参数port设置了Redis的端口号,除此之外Redis还支持其他配置选项,如是否开启持久化,日志级别等.由于可以配置的选项较多,通过启动参数设置这些选项并不方便,所以Redis支持通过配置文件来设置这些选项.启动配置文件的方法在启动时将配置文件的路径作为...

2017-06-28 20:33:12

阅读数:276

评论数:0

[Spark]Shark, Spark SQL, Hive on Spark以及SQL On Spark的未来

随着Spark SQ的引入以及Hive On Apache Spark的新功能(HIVE-7292)的引入,我们对这两个项目的立场以及它们与Shark的关系有了很多的关注。在今天的Spark Summit上,我们宣布我们正在停止Shark的开发,并将资源全部集中在Spark SQL上,这将为现有S...

2017-06-20 20:41:40

阅读数:552

评论数:0

[Spark]Spark RDD 指南五 持久化

1. 概述Spark中最重要的功能之一是操作时在内存中持久化(缓存)数据集(persisting (or caching) a dataset in memory across operations)。当我们让Spark持久化存储一个RDD时,每个节点都会将其计算的任何分区存储在内存中,并将其重用...

2017-06-16 18:05:41

阅读数:1128

评论数:0

[Shell]tr命令使用指南

1. 用途tr,translate的简写,主要用于压缩重复字符,删除文件中的控制字符以及进行字符转换操作。2. 语法tr [OPTION]... SET1 [SET2]3. 参数3.1 -s 压缩重复字符-s: squeeze-repeats,用SET1指定的字符来替换对应的重复字符 (repla...

2017-06-16 14:20:32

阅读数:557

评论数:0

[Shell]test命令使用指南

Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。1. 数值参数说明-eq等于则为真-ne不等于则为真-gt大于则为真-ge大于等于则为真-lt小于则为真-le小于等于则为真Example:num1=100 num2=100 if test $[nu...

2017-06-16 14:14:33

阅读数:396

评论数:0

[Shell]特殊变量$0$#$*$@$?和命令行参数

1. 参数变量特殊变量列表变量含义$0当前脚本的文件名$n传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。$#传递给脚本或函数的参数个数。$*传递给脚本或函数的所有参数。$@传递给脚本或函数的所有参数。被双引号(" ")包含时,...

2017-06-15 20:36:15

阅读数:559

评论数:0

[Spark]Spark RDD 指南四 RDD操作

Spark2.3.0版本: Spark2.3.0 RDD操作RDD支持两种类型的操作:转移(transformations):从现有数据集创建一个新数据集 动作(actions):在数据集上进行计算后将值返回给驱动程序例如,map是一个转移操作,传递给每个数据集元素一个函数并返回一个新RDD表示返...

2017-06-13 21:14:25

阅读数:1107

评论数:0

[Spark]Spark RDD 指南三 弹性分布式数据集(RDD)

Spark2.3.0 版本: Spark2.3.0 创建RDDSpark的核心概念是弹性分布式数据集(RDD),RDD是一个可容错、可并行操作的分布式元素集合。有两种方法可以创建RDD对象:在驱动程序中并行化操作集合对象来创建RDD从外部存储系统中引用数据集(如:共享文件系统、HDFS、HBase...

2017-06-12 20:40:52

阅读数:709

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭