自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(106)
  • 收藏
  • 关注

原创 区块链简述

区块链概述1、区块链属于一种去中心化的记录技术。参与到系统上的节点,可能不属于同一组织、彼此无需信任;区块链数据由所有节点共同维护,每个参与维护节点都能复制获得一份完整记录的拷贝。2、跟传统的记账技术相比,其特点包括:① 维护一条不断增长的链,只可能添加记录,而发生过的记录都不可篡改; ② 去中心化,或者说多中心化,无需集中的控制而能达成共识,实现上尽量分布式; ③ 通过密码学的机...

2018-02-27 10:56:27 2846

原创 各组件总结

【HBase】【Hive】【Cassandra】【MongoDB】【Storm】【Kafka】【Flume】【Redis】【Ganglia】

2017-12-21 16:27:00 593

原创 Java_Lambda表达式

Lambda表达式: (Apple a1, Apple a2) -> { a1.getWeight().compareTo(a2.getWeight()) }  参数列表 —— 这里它采用了Comparator中compare方法的参数,两个Apple。  箭头 —— ‘->’把参数列表与Lambda主体分隔开。  Lambda主体 —— 比较两个Apple的重量。表达式就是Lambda

2017-12-18 16:49:53 514

原创 Java_通过行为参数化传递代码

通过行为参数化传递代码 把一个行为(一段代码)封装起来,并通过传递和使用创建的行为(例如对Apple的不同谓词)将方法的行为参数化。// 定义Apple类public class Apple{ private Integer weight = null; private String color = null; public Apple(Integer weight, S

2017-12-18 14:40:50 819

原创 Scala_类

一、类的基本元素 class Counter{ private var value = 0 // 定义私有属性 def increment() { value += 1} // 定义方法,默认是共有的 def current() = value }二、私有变量 Scala生成面向JVM的类,其中有一个私有的age字段以及相应的getter和setter方法

2017-12-16 16:42:03 365

原创 Scala_常用功能

一、If…Else… val x = 5 val s = if (x > 0) 1 else -1 // s 类型为Int val m = if (x > 0) "positive" else -1 // s 类型为String和Int的公共超类型Any // 在Scala中,每个表达式都应该有某种值。 如果else部分缺失了,以下语句相当于:if (x > 0) 1 else ()

2017-12-16 16:14:09 347

原创 Scala_容器

一、关键字:var(variable:可重新指向其他对象) val(value:只能始终指向同一对象)① 定义变量 val array: Array[String] = new Array(5) var stockPrice: Double = 100.0 stockPrice = 200.0 // 指向另一个对象② 定义一个变量或常量时,也可不指定类型,由编译器自行推断 va

2017-12-15 23:57:19 471

原创 Python_高级特性

一、生成器生成器表达式背后遵守了迭代器协议,可以逐个地产出元素,而不是先建立一个完整的列表,然后再把这个列表传递到某个构造函数里。能够节省内存使用。colors = ['black', 'white']sizes = ['s', 'm', 'l']for tshirt in ('%s %s' % (c, s) for c in colors for s in sizes): print

2017-12-15 22:15:14 368

原创 B-、B、B+、B*树

B树(即二叉搜索树):① 节点本身存储一个关键字 ② 非叶子节点至多两个子 ③ 左子比父小,右子比父大特性: 当左右子树节点数差不多时(平衡), 搜索性能逼近二分查找。比起连续内 存空间来,优点是插入和删除节点时 不需要移动大段的内存数据,通常为 常数开销。缺点: 经过多次插入和删除后,可能导致不同的结构,导致搜索性能降低。B-树(多路搜索树,不是二叉的): (M=3,M应定义为

2017-12-14 22:07:59 451

原创 Solr_集群介绍

概述Lucene是一个Java语言编写的利用倒排原理实现的文本检索类库 Solr是以Lucene为基础实现的文本检索应用服务。Solr部署方式有单机方式、多机Master-Slaver方式、Cloud方式 SolrCloud是基于Solr和Zookeeper的分布式搜索方案。在分布式索引中,原来的大索引,将会分成多个小索引,solr可以将这些小索引返回的结果合并,然后返回给客户端。solr的基

2017-12-14 15:51:41 772

原创 Lucene_简介

Lucene概述Lucene是一款高性能的、可扩展的信息检索(IR)工具库。信息检索是指文档搜索、文档内信息搜索或者文档相关的元数据搜索等操作。索引过程:①获取内容②建立文档 获取原始内容后,就需要对这些内容进行索引,必须首先将这些内容转换成部件(通常称为文档),以供搜索引擎使用。文档主要包括几个带值的域,比如标题、正文、摘要、作者和链接。③文档分析 搜索引擎不能直接对文本进行索引:确切地说,

2017-12-14 15:09:43 47373 1

原创 Yarn_资源调度器

概述资源调度器是Hadoop YARN 中最核心的组件之一, 它是ResourceManager 中的一个插拔式服务组件,负责整个集群资源的管理和分配。主要有两种多用户资源调度器的设计思路:第一种在一个物理集群上虚拟多个Hadoop 集群, 这些集群各自拥有全套独立的Hadoop 服务,典型的代表是HOD( Hadoop On Demand )调度器(Hadoop2.0不再使用);另一种是扩展YAR

2017-12-14 14:35:21 1532

原创 Yarn_ResourceManager剖析

概述Yarn采用了Master/Slave结构,其中,Master实现为ResourceManager,负责整个集群资源的管理与调度;Slave实现为NodeManager,负责单个节点的资源管理与任务启动。ResourceManager是整个YARN集群中最重要的组件之一,它的设计直接决定了系统的可扩展性、可用性和容错性等特点,它的功能较多,包括ApplicationMaster管理(启动、停止等

2017-12-14 14:23:47 1295

原创 Hadoop_HA原理

总体上说, Hadoop 2.0 中的HDFS 和YARN 均采用了基于共享存储的HA 解决方案,即Active Master 不断将信息写入一个共享存储系统, 而Standby Master 则不断读取这些信息,以与Active Master 的内存信息保持同步。当需要主备切换时, 选中的Standby Master需先保证信息完全同步后, 再将自己的角色切换至Active Master。目前而言

2017-12-14 14:18:48 2518

原创 Yarn_应用程序设计

概述YARN 是一个资源管理系统,负责集群资源的管理和调度。如果想要将一个新的应用程序运行在YARN之上,通常需要编写两个组件Client和ApplicationMaster。其中, Client负责向ResourceManager提交 ApplicationMaster,并查询应用程序运行状态;ApplicationMaster负责向ResourceManager申请资源(以Container形式

2017-12-14 13:49:38 487

原创 Yarn_基础库

概述YARN 基础库是其他一切模块的基础,它的设计直接决定了YARN 的稳定性和扩展性,概括起来,YARN 的基础库主要有以下几个。 ❑ Protocol Buffers :Protocol Buffers 是 Google 开源的序列化库,具有平台无关、高性能、兼容性好等优点。YARN 将Protocol Buffers 用到了RPC 通信中,默认情况下, YARN RPC 中所有参数采用Pro

2017-12-14 12:42:58 430

原创 Yarn_基础

轻量级弹性计算平台基于数据密集型应用的计算框架不断出现,从支持离线处理的MapReduce,到支持在线处理的 Storm,从迭代式计算框架Spark 到流式处理框架S4。在搜索引擎公司中,一种可能的技术方 案如下:网页建立索引采用MapReduce 框架,自然语言处理/ 数据挖掘采用Spark(如网页 PageRank 计算、聚类分类算法等),对性能要求很高的数据挖掘算法用MPI 等。考虑到

2017-12-14 11:49:23 820

原创 Zookeeper_典型应用场景

数据发布/订阅即所谓的配置中心,发布者将数据发布到zookeeper的一个或多个节点上,供订阅者进行数据订阅,进而达到动态获取数据的目的,实现配置信息的集中式管理和数据的动态更新。zookeeper采用的是推拉结合的方式:客户端向服务端注册自己需要关注的节点,一旦该节点的数据发生变更,那么服务端就会向相应的客户端发送watcher事件通知,客户端接收到这个消息通知之后,需要主动到服务端获取最新的数据

2017-12-12 09:29:14 1231

原创 Zookeeper_运维

基本配置 参数名 说明clientPort 该参数无默认值,必须配置。表示当前服务器对外服务的端口号,一般设置为2181.集群汇总的所有服务器不需要保持clientPort端口一致dataDir 该参数无默认值,必须配置。这是zookeeper服务器存储快照文件的目录。如果没有配置参数dataLogDir,那么事

2017-12-12 09:28:56 448

原创 Zookeeper_概述

zookeeper是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能。 zookeeper可以保证如下分布式一致性特性: ① 顺序一致性: 从同一个客户端发起的事务请求,最终将会严格的按照其发起顺序被应用到zookeeper中去 ② 原子性: 所有事务请求的处理

2017-12-11 15:15:21 436

原创 一致性协议

二阶段提交:2PC 将一个事务的处理过程分为了投票和执行两个阶段,其核心是对每个事务都采用先尝试后提交的处理方式,可将二阶段提交看作一个强一致性的算法。 优点:原理简单,实现方便 缺点:同步阻塞、单点问题、数据不一致、太过保守 ① 同步阻塞:在二阶段提交的执行过程中,所有参与该事务操作的逻辑都处于阻塞状态,也就是说,各个参与者在等待其他参与者响应的过程中,将无法进行任何其他操作。 ②

2017-12-11 14:57:59 314

原创 Neo4j_高层架构和应用

1、高层Neo4j架构 ① 硬盘 避免硬盘输入输出是最大化Neo4j性能的关键因素之一,当不能避硬盘输入输出时使用高速硬盘能提高性能。② 空间大小 可以基于对需求节点、关系和属性的估计做粗略的计算。一般公式是:核心图形大小(字节)=(节点数×以字节记的节点存储大小)+(关系数×以字节记的关系存储大小)+(属性数×平均每属性的字节数)此外还会有索引、事务日志等需要的额外硬盘占用。③ 存储文件

2017-12-11 14:40:20 3031

原创 Neo4j_嵌入模式&服务器模式

使用模式概述引进服务器模式背后的主要驱动因素是对支持其他非基于JVM的客户的需求。在服务器模式下,Neo4j数据库以自己的进程运行,客户端通过它的专用基于HTTP的REST API与其对话。嵌入式模式嵌入式模式并不是指硬盘上的实际物理数据库嵌入到你的应用程序中,而是嵌入到Neo4j引擎(类和相关的过程)直接运行和管理Neo4j数据库。嵌入式模式意味着你的应用程序和Neo4j代码将会驻留和运行于同一

2017-12-11 13:47:34 6412 1

原创 Neo4j_事务&深度遍历

事务 创建事务: 想显式地回滚一个事务,例如从一个条件代码块,可以调用failure方法,则事务将在程序块的结束做无条件的回滚。既不调用success方法也不调用failure方法也将会导致事务回滚(默认)。 在一个事务中定义USER标签的name作为模式可索引的属性,然后使用分离的事务实际设置一个真实用户的值: 许多数据库管理系统使用锁机制来管理对同一个数据库的同时访问。Neo4j 事务是

2017-12-11 11:34:25 8011 4

原创 Neo4j_Cypher

1、Cypher增删改查① 增 创建节点: create (n:node_type{name:’Regan’,age:24}) return n; node_type:该节点所属标签名字 创建关系: start regan=node:test(name=’Regan’), lucy=node:test(name=’Lucy’) create (regan)-[r:friend]->(luc

2017-12-11 11:04:17 481

原创 Neo4j_基础

Neo4j有如下特点: ·完整的ACID支持 ·高可用性 ·轻易扩展到上亿级别的节点和关系 ·通过遍历工具高速检索数据 图数据库用于存储关系复杂的数据是它最大的优势。通过Neo4j提供的遍历工具,可以非常高效的进行数据检索,每秒可以达到上亿级的检索量。基本概念 ① 什么是图数据库 图数据库通过在一张图上存储节点和关系来持久化数据结构。② 节点 构成一张图的基本元素是节点和关

2017-12-11 10:49:02 2326

原创 Kafka_认证加密

一、使用SSL加密和认证为每个Kafka broker生成SSL密钥和证书。 部署HTTPS,第一步是为集群的每台机器生成密钥和证书,可以使用java的keytool来生成密钥到一个临时的密钥库,之后可以导出并用CA签名它。keytool -keystore server.keystore.jks -alias localhost -validity {validity} -genkeykey

2017-12-11 10:21:44 3116

原创 Kafka_流

Kafka streams核心概念时间: 时间在流中的常见概念如下: ·事件时间 - 当一个事件或数据记录发生的时间点,就是最初创建的“源头”。 ·处理时间 - 事件或数据消息发生在流处理应用程序处理的时间点。即,记录已被消费。处理时间可能是毫秒,小时,或天等。比原始事件时间要晚。 ·摄取时间 - 事件或数据记录由Kafka broker存储在topic分区的时间点。与事件时间的差异是,当记

2017-12-11 10:06:33 783

原创 Kafka_集群特性

集群概述 Kafka集群具有横向扩展、变态快,大吞吐量、内置分区、副本、故障转移等特点。同时,Kafka是一个非常高性能的存储系统。写入到kafka的数据将直接写到磁盘并复制到集群中保证容错性。并允许生产者等待消息应答,直到消息完全写入。client来控制读取数据的位置。可以认为kafka是一种专用于高性能,低延迟,提交日志存储,复制,和传播特殊用途的分布式文件系统。kafka集群最好部署在相同局

2017-12-11 09:50:03 703

原创 Python_常用模块

一、日志:Loggingimport loggingfmt = '%(asctime)s - %(filename)s:%(lineno)s - %(name)s - %(message)s' # 时间-文件名:行数-logger名-日志信息logging.basicConfig(level=logging.DEBUG, filename='testLog.log', format=fmt)l

2017-12-08 18:02:30 360

原创 Python_容器

一、序列所有序列类型都可以进行某些特定的操作。包括:索引、分片、加、乘以及检查某个元素是否属于序列的成员(成员资格)、计算序列长度、找出最大元素和最小元素。① 索引numList = [1, 2, 3, 4, 5]string = 'hello word!'print numList[3], string[-2] # 4 d② 分片print numList[:3], numList[2:

2017-12-08 14:08:26 363

原创 Kafka_基础和架构

一、架构1、Kafka集群架构 多个 broker 协同合作,producer 和 consumer 部署在各个业务逻辑中,三者通过 zookeeper管理协调请求和转发。 2、Kafka Stream架构 Kafka Streams通过生产者和消费者,并利用kafka自有的能力来提供数据 平行性,分布式协调性,故障容错和操作简单性: 3、Kafka stream处理拓扑 ①流是Kaf

2017-12-07 17:16:12 424

原创 Ganglia_简述

一、Ganglia概述规模的问题Ganglia的运行和绝大多数监控系统是不一样的, Ganglia设计最大的考虑就是为了解决规模的问题。主机即监控系统基于冗余的结构Ganglia 假设用户主机存在冗余,或至少按照某种意义进行分组。Ganglia是否适合基于以下一些前提:① 拥有一些装有多用途操作系统的计算机(如非路由器、交换机等),并且希望获得它们近实时的性能信息。实际上,结合sFlow代理

2017-12-07 16:19:38 8452

原创 Kafka_集群搭建

一、 搭建Kafka集群解压kafka压缩包tar -xzvf kafka_2.11-0.9.0.1.tgz修改config中的service.properties配置文件#当前机器在集群中的唯一标识,和zookeeper的myid性质一样broker.id=1#当前kafka对外提供服务的端口默认是9092port=19092#这个参数默认是关闭的,在0.8.1有个bug,DNS解析问题,失败

2017-12-06 16:09:41 378

原创 Kafka_Shell命令

检查消费者位置bin/kafka-consumer-groups.sh --new-consumer --bootstrap-server localhost:9092 --describe --group test-consumer-group列出所有topic中的所有用户组:bin/kafka-consumer-groups.sh --bootstrap-server broker1:9092

2017-12-06 15:20:08 1427

原创 Kafka_生产者、消费者、流API

生产者客户端API Properties props = new Properties(); props.put("bootstrap.servers", "192.168.6.187:9092,192.168.6.188:9092,192.168.6.229:9092"); props.put("acks", "all"); props.put("retries", 0); props.p

2017-12-06 14:47:14 548

原创 规划、部署、监控Flume

规划一个Flume部署修复时间 有两个类型的上限:MaxTTR,单个服务器的最大故障时间; MTSR,存储或索引集群的最大故障时间Flume Channel需要多少容量假设所有应用服务器事件的综合生产能力在高峰小时是每秒Pmax个事件,那么在这个时期产生事件的总数为:Tmax=Pmax * MaxTSR 这是应该缓冲在整个Flume部署中的事件总数。但没有考虑托管Flume Agent的机器

2017-12-06 11:43:54 491

原创 发送数据到Flume

Flume有两类发送数据到Flume Agent的程序性方法:Flume SDK和Embedded Agent API。Flume也自带有log4j appender,可以用来从应用程序发送数据到Flume Agent。1、构建Flume事件事件是Flume中数据的基本表现形式,每个Flume事件包含header的一个map集合和一个body,是表示为字节数组的有效负荷。 Event接口: Ev

2017-12-06 11:34:06 2933

原创 Flume_拦截器、选择器、Sink组

拦截器(interceptor)拦截器是简单插件式组件,设置在Source和Source写入数据的Channel之间。每个拦截器实例只处理同一个Source接收到的事件。因为拦截器必须在事件写入channel之前完成转换操作,只有当拦截器已成功转换事件后,channel(和任何其他可能产生超时的source)才会响应发送事件的客户端或sink,因此在拦截器中进行大量重量级的处理并不是一个好主意。如果

2017-12-06 11:16:45 2996

原创 Flume_Sink

概述从Flume Agent移除数据并写入到另一个Agent或数据存储或一些其他存储系统的组件被称为sink。Sink不断的轮询channel中的事件且批量的移除它们。这些事件批量写入到存储或索引系统,或者被发送到另一个Flume Agent。Sink是完全事务性的。在从channel批量移除数据之前,每个sink用channel启动一个事务。批量事件一旦成功写出到存储系统或下一个Flume Age

2017-12-06 10:45:30 1862

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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