暂无个人介绍
先整体介绍一下搭建storm集群的步骤: 设置zookeeper集群 安装依赖到所有nimbus和worker节点 下载并解压storm发布版本到所有nimbus和worker节点 配置storm.yaml 启动相关后台进程 1 首先配置zookeeper集群 我们知道storm通过zookeeper来协调整个集群。zookeeper不是用来做消息传递,因
在java中,我们经常需要对List、Array等做一些转换操作,当然转换方法有很多种,但哪种方法既方便又高效呢?在这里向大家介绍一下集合间的最佳转换方法。 1.List转换为Array List<String> list = new ArrayList<String>(); list.add("China"); list.add("Switzer
我们知道Storm有一个很重要的特性,那就是Storm API能够保证它的一个Tuple能够被完全处理,这一点尤为重要,其实storm中的可靠性是由spout和bolt组件共同完成的,下面就从spout和bolt两个方便给大家介绍一下storm中的可靠性,最后会给出一个实现了可靠性的例子。 1.Spout的可靠性保证 在Storm中,消息处理可靠性从Spout开始的
1 什么是MapReduce? Map本意可以理解为地图,映射(面向对象语言都有Map集合),这里我们可以理解为从现实世界获得或产生映射。Reduce本意是减少的意思,这里我们可以理解为归并前面Map产生的映射。 2 MapReduce的编程模型 按照google的MapReduce论文所说的,MapReduce的编程模型的原理是:利用一个输入key/value对集合
先理解MapReduce作业组成 一个完整的MapReduce作业称作job,它包括三部分: 输入数据 MapReduce程序 配置信息 Hadoop工作时会将job分成若干个task:map任务和reduce任务 有两类节点控制作业执行的过程:JobTracker和TaskTracker JobTrack
一、概要 1.1 Storm(简介) Storm是一个实时的可靠地分布式流计算框架。 具体就不多说了,举个例子,它的一个典型的大数据实时计算应用场景:从Kafka消息队列读取消息(可以是logs,clicks,sensor data)、通过Storm对消息进行计算聚合等预处理、把处理结果持久化到NoSQL数据库或者HDFS做进一步深入分析。1.2 Tri
一、Storm中运行的组件 我们知道,Storm的强大之处就是可以很容易地在集群中横向拓展它的计算能力,它会把整个运算过程分割成多个独立的tasks在集群中进行并行计算。在Storm中,一个task就是运行在集群中的一个Spout或Bolt实例。 为了方便理解Storm如何并行处理我们分给它的任务,这里我先介绍一下在集群中涉及到Topology的四种组件:
有时候我们不想使用任何框架,但又需要用JDBC实现类似于iBATIS的orm映射功能,把一个ResultSet转换成我们的JavaBeans,我们可以模仿iBATIS的方式自己写一个ResultSetMapper实现类,利用反射原理把ResultSet转换成一个JavaBeans,下面是网上的一个开源实现,主要用到的是注解和反射机制,我们先看一下使用效果: package c
下面是stackoverflow关于Java集合方面讨论最多的几个问题,在这里整理出来供大家参考。 1.关于LinkList和ArrayList ArrayList:内部实现是个数组,其中的元素可以通过index获取。但是,如果一个数组满了的话,我们就必须重新分配一个更大的数组然后把所有元素移动到这个新数组,其时间复杂度为O(n)。添加或删除一个元素时也需要移动数组中的其它
1.Collection 和 Collections 首先Collection和Collections是两个完全不同的范畴。正如下图,Collection是所有集合的root接口,而Collections仅仅是一个工具类,它提供了很多静态的工具方法来操作一个集合。 2. 集合的继承树 3.Map的继承树 4.总结 5.示例代码
最近在和一些公司的软件工程师和管理人员交流时,发现他们经常发出这样的感慨:寻找一名优秀的测试人员这是太难了。那么,具备哪些要素才成成就一名优秀的测试人员,下面是我认为比较重要的几点: 1.对分析和测试的激情:任何事情的成功的关键在于你是否对它怀有真正的激情。 2.专业技术:要想成为一个伟大的测试者,必须要具备非常出色的编程能力,这样你才能很好的理解你要测试
英文原址:https://github.com/nathanmarz/storm/wiki/Trident-tutorial ---------------- Trident是在storm基础上,一个以realtime 计算为目标的高度抽象。 它在提供处理大吞吐量数据能力的同时,也提供了低延时分布式查询和有状态流式处理的能力。 如果你对Pig和Cascading这种
一、概述 Storm Trident中的核心数据模型就是“Stream”,也就是说,Storm Trident处理的是Stream,但是实际上Stream是被成批处理的,Stream被切分成一个个的Batch分布到集群中,所有应用在Stream上的函数最终会应用到每个节点的Batch中,实现并行计算,具体如下图所示: 在Trident中有五种操作类型:
本实例主要参考的是官网的examples:点击这里 使用场景:客户端向Netty请求一个文件,Netty服务端下载指定位置文件到客户端。 本实例使用的是Http协议,当然,可以通过简单的修改即可换成TCP协议。 需要注意本实例的关键点是,为了更高效的传输大数据,实例中用到了ChunkedWriteHandler编码器,它提供了以zero-memory-copy方式写文件。 第一步:
Redis中数据清除可以分为两种方式 手动清除:指定要清除的key,通过delete命令即可清除 自动清除:使用Redis提供的数据过期策略 Redis数据过期策略 redis提供了非常灵活的数据自动清除策略,通过简单配置即可实现,以下是具体的策略: noeviction:达到内存限制时返回报错 allkeys-lru:对所有的key采用
1.Kafka提供了两套API给Consumer The high-level Consumer API The SimpleConsumer API 第一种高度抽象的Consumer API,它使用起来简单、方便,但是对于某些特殊的需求我们可能要用到第二种更底层的API,那么先介绍下第二种API能够帮助我们做哪些事情 一个消息读取多次 在一个处理过程中只消
背景: 当今社会各种应用系统诸如商业、社交、搜索、浏览等像信息工厂一样不断的生产出各种信息,在大数据时代,我们面临如下几个挑战: 如何收集这些巨大的信息 如何分析它 如何及时做到如上两点 以上几个挑战形成了一个业务需求模型,即生产者生产(produce)各种信息,消费者消费(consume)(处理分析)这些信息,而在生产者与消费者之间,
本文译自:https://storm.incubator.apache.org/documentation/Distributed-RPC.html Storm里面引入DRPC主要是利用storm的实时计算能力来并行化CPU intensive的计算。DRPC的storm topology以函数的参数流作为输入,而把这些函数调用的返回值作为topology的输出流。 DR
在全面介绍Storm之前,我们先通过一个简单的Demo让大家整体感受一下什么是Storm。 Storm运行模式: 本地模式(Local Mode): 即Topology(相当于一个任务,后续会详细讲解) 运行在本地机器的单一JVM上,这个模式主要用来开发、调试。 远程模式(Remote Mode):在这个模式,我们把我们的Topology提交到集群,在这个模式中,St
Kafka集群配置比较简单,为了更好的让大家理解,在这里要分别介绍下面三种配置 单节点:一个broker的集群 单节点:多个broker的集群 多节点:多broker集群 一、单节点单broker实例的配置 1. 首先启动zookeeper服务 Kafka本身提供了启动zookeeper的脚本(在kafka/bin/目录下)和zookeeper配置文件(在k
先从概念层次介绍下Hadoop的各个组件,下一部分会深入Hadoop的每个组件,并从实战层次讲解。 一、Hadoop构造模块 运行Hadoop的意思其实就是运行一组守护进程(daemons),每个进程都有各自的角色,有的仅运行在单个服务器上,有的则运行在集群多个服务器上,它们包括: NameNode Secondary NameNode DataNode JobTra
有时我们需要对执行SQL的具体执行过程做一个追踪分析,特别是在应用程序性能优化的时候。Oracle两个工具可以帮助我们做好性能分析,一个是SQL_TRACE,一个是SESSION_EVENT。SQL_TRACE跟踪SQL执行过程,如解析时间、执行时间、查询时间等;SESSION_EVENT跟踪执行过程的等待事件,如等待客户端响应时间,等待本地磁盘IO事件等等。 开启O
1.下载Debug版本jar包 首先要下载一个Debug版本的JDBC jar包,Debug版本的jar包命名形式为jdbcX_g.jar(如下图所示),如Oracle11g的Debug版本的jar包为jdbc6_g.jar。点击这里下载:http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112
近期用到了利用JDBC查询Oracle数据库,但是查询效率不尽人意,研究了一下JDBC方面可以优化的地方,在这里跟大家分享一下。 1.设置最优的预取值 defaultRowPrefetch:预取条数默认值 defaultBatchValue:触发查询操作的批量请求值 这两个参数的默认值都是10,我们可以通过增
一、整体看一下Kafka 我们知道,Kafka系统有三大组件:Producer、Consumer、broker 。 producers 生产(produce)消息(message)并推(push)送给brokers,consumers从brokers把消息提取(pull)出来消费(consume)。 二、开发一个Producer应用 Pro
一、Netty解决TCP协议数据分包问题思路 我们知道通过TCP协议发送接收数据时,如果数据过大,接收到的数据会是分包的,比如: +-----+-----+-----+ 发送数据是: | ABC | DEF | GHI |
从数据爆炸开始。。。 1.1 第三次工业革命 第一次:18世纪60年代,手工工厂向机器大生产过渡,以蒸汽机的发明和使用为标志。 第二次:19世纪70年代,各种新技术新发明不断被应用于工业生产,以电力的发明使用为标志。 第三次:20世界四五十年代末,以高新技术为代表的新科学技术革命,以原子能、航天技术和电子计算机 为标志。
读完这一章,我们基本上可以了解到Netty所有重要的组件,对Netty有一个全面的认识,这对下一步深入学习Netty是十分重要的,而学完这一章,我们其实已经可以用Netty解决一些常规的问题了。 一、先纵览一下Netty,看看Netty都有哪些组件? 为了更好的理解和进一步深入Netty,我们先总体认识一下Netty用到的组件及它们在整个Netty架构中
如何使用Log4j? 1、 Log4j是什么? Log4j可以帮助调试(有时候debug是发挥不了作 用的)和分析,要下载和了解更详细的内容,还是访问其官方网站吧: http://jakarta.apache.org/log4j 。2、Log4j的概念 Log4j中有三个主要的组件,它们分别是 Logger、Appender和Layout,Log4j 允许开发人员定义
iBATIS 框架主要的类层次结构 总体来说 iBATIS 的系统结构还是比较简单的,它主要完成两件事情: 根据 JDBC 规范建立与数据库的连接; 通过反射打通 Java 对象与数据库参数交互之间相互转化关系。 iBATIS 的框架结构也是按照这种思想来组织类层次结构的,其实它是一种典型的交互式框架。先期准备好交互的必要条件,然后构建一个交互的环境,交互环境中
既然是入门,那我们就在这里写一个简单的Demo,客户端发送一个字符串到服务器端,服务器端接收字符串后再发送回客户端。 2.1、配置开发环境 1.安装JDK 2.去官网下载jar包 (或者通过pom构建) 2.2、认识下Netty的Client和Server 一个Netty应用模型,如下图所示,但需要明白一点的是,我们写的Server会自动处理多客户端
Java SimpleDateFormat 是线程不安全的,当在多线程环境下使用一个DateFormat的时候是有问题的,如下面的例子: package com.heaven.threadpool; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import
一、等待线程池所有线程完成: 有时候我们需要等待java thread pool中所有任务完成后再做某些操作,如想要等待所有任务完成,仅需调用threadPool.awaitTermination()方法即可,请查看如下代码: ExecutorService threadPool = Executors.newFixedThreadPool(ConfigUtil.ACCESSDB_
最近公司在进行缓存框架方面的调研,我主要对Memcached在缓存大数据量情况下对系统硬件的影响和需求做了调研,以下是一些测试数据和调研结果: Memcached缓存不同数据量测试情况: 一、测试环境配置信息 1. 缓存服务器配置信息:一共4台 ,三台是公司服务器,一台是本机 node1
我们经常会有这种业务需求,根据一个条件集合去查询一张表的数据,比如: select * from all_element t where t.task_id in (List <taskids>); 在java语言中,我们需要用到JDBC来和数据库打交道,那么在JDBC中该如何处理这种需求呢?我们可以有如下几种处理方式 方案一:写一
刚刚开始研究Memcache,觉得Memcache Key的设计其实是十分重要的,搜了搜,感觉资料不是很多,下面这些资料主要是从官网上获得的,有些地方可能不太精确,仅供参考。 初始化Memcache Client # perl my $memclient = Cache::Memcached->new({ servers => [ '10.0.0.10:112
下面主要介绍一下如果监控 memcached 实例的运行情况. 我们需要明确的是需要通过 telnet才能获得Memcache的运行信息. 下面详细介绍下Memcache Telnet接口的主要用法。 连接到Telnet 当Memcache启动后,可以先使用 "ps -ef"查看哪一个 IP 和 端口正在被Memcache进程使用,
一、问题: 数据库表数据量极大(千万条),要求让服务器更加快速地响应用户的需求。 二、解决方案: 1.通过高速服务器Cache缓存数据库数据 2.内存数据库 (这里仅从数据缓存方面考虑,当然,后期可以采用Hadoop+HBase+Hive等分布式存储分析平台) 三、主流解Cache和数据库对比:
Http/Https协议是最重要最常用到的协议之一,Netty提供了一些了的Handler来处理Http协议下的编码工作。下面就介绍一个Netty实例: 1.通过HttpClient发送Protobuf类型数据到服务端 2.服务端Netty负责把接收到的Http请求中的数据再发送到客户端。 3.其中Netty对发送的数据量没有限制,因为Http发送的message往往是由一系列inf
可以只用一行代码来运行MapReduce作业:JobClient.runJon(conf),Job作业运行时参与的四个实体: 1.JobClient 写代码,配置作业,提交作业。 2.JobTracker:初始化作业,分配作业,协调作业运行。这是一个java程序,主类是JobTracker。 3.TaskTracker:运行作业划分后的任务,即分配数
先前我曾经写了一篇“网站的安全登录认证设计”,可能是讲述的不够清楚,有一位读者就留言质疑到,“公钥顾名思义就是公开的啦,只要你愿意,谁都会有你的公钥,何来安全?应该是用网站的公钥加密,传到网站后,网站用自己的私钥解密吧”。 这些密码学的概念容易被搞混淆,的确也情有可原。因为公钥、私钥、加密、认证这些都是较为复杂的问题,其概念不太容易理解,理解不透就容易产生各种似
Ajax=异步的JavaScript和XML 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。 一、AJAX - 创建 XMLHttpRequest 对象 1.什么是XMLHttpRequest对象 所有现代浏览器(IE7、Chrome、Firefox、S