精华内容
下载资源
问答
  • Diffusive 是一个真正的分布式、基于扩散的分布式计算框架。 Diffusive 是一个基于 Java 的框架,它提供了通过用 @Diffusive 标记来分发任何 Java 方法的执行的能力。 该方法被分发到计算资源网络。 负责执行或...
  • Light_drtc是一个轻量级分布式实时计算框架,它可以帮助你快速实现自定义的实时计算平台。它主要参考当前流行的实时计算框架Storm的任务分发和Spark Streaming的Mini-Batch处理思想设计,设计目的是为了降低当前...
  • Java线程(十一):Fork/Join-Java并行计算框架

    万次阅读 热门讨论 2015-07-22 21:12:51
    并行计算在处处都有大数据的今天已经不是一个新鲜的词汇了,现在已经有单机多核甚至多机集群并行计算,注意,这里说的是...Java在JDK7之后加入了并行计算框架Fork/Join,可以解决我们系统中大数据计算的性能问题。

    并行计算在处处都有大数据的今天已经不是一个新鲜的词汇了,现在已经有单机多核甚至多机集群并行计算,注意,这里说的是并行,而不是并发。严格的将,并行是指系统内有多个任务同时执行,而并发是指系统内有多个任务同时存在,不同的任务按时间分片的方式切换执行,由于切换的时间很短,给人的感觉好像是在同时执行。
    Java在JDK7之后加入了并行计算的框架Fork/Join,可以解决我们系统中大数据计算的性能问题。Fork/Join采用的是分治法,Fork是将一个大任务拆分成若干个子任务,子任务分别去计算,而Join是获取到子任务的计算结果,然后合并,这个是递归的过程。子任务被分配到不同的核上执行时,效率最高。伪代码如下:

    Result solve(Problem problem) {
        if (problem is small)
            directly solve problem
        else {
            split problem into independent parts
            fork new subtasks to solve each part
            join all subtasks
            compose result from subresults
        }
    }

    Fork/Join框架的核心类是ForkJoinPool,它能够接收一个ForkJoinTask,并得到计算结果。ForkJoinTask有两个子类,RecursiveTask(有返回值)和RecursiveAction(无返回结果),我们自己定义任务时,只需选择这两个类继承即可。类图如下:
    这里写图片描述这里写图片描述
    下面来看一个实例:计算一个超大数组所有元素的和。代码如下:

    import java.util.Arrays;
    import java.util.Random;
    import java.util.concurrent.ExecutionException;
    import java.util.concurrent.ForkJoinPool;
    import java.util.concurrent.RecursiveTask;
    
    /**
     * @author: shuang.gao  Date: 2015/7/14 Time: 8:16
     */
    public class SumTask extends RecursiveTask<Integer> {
    
        private static final long serialVersionUID = -6196480027075657316L;
    
        private static final int THRESHOLD = 500000;
    
        private long[] array;
    
        private int low;
    
        private int high;
    
        public SumTask(long[] array, int low, int high) {
            this.array = array;
            this.low = low;
            this.high = high;
        }
    
        @Override
        protected Integer compute() {
            int sum = 0;
            if (high - low <= THRESHOLD) {
                // 小于阈值则直接计算
                for (int i = low; i < high; i++) {
                    sum += array[i];
                }
            } else {
                // 1. 一个大任务分割成两个子任务
                int mid = (low + high) >>> 1;
                SumTask left = new SumTask(array, low, mid);
                SumTask right = new SumTask(array, mid + 1, high);
    
                // 2. 分别计算
                left.fork();
                right.fork();
    
                // 3. 合并结果
                sum = left.join() + right.join();
            }
            return sum;
        }
    
        public static void main(String[] args) throws ExecutionException, InterruptedException {
            long[] array = genArray(1000000);
    
            System.out.println(Arrays.toString(array));
    
            // 1. 创建任务
            SumTask sumTask = new SumTask(array, 0, array.length - 1);
    
            long begin = System.currentTimeMillis();
    
            // 2. 创建线程池
            ForkJoinPool forkJoinPool = new ForkJoinPool();
    
            // 3. 提交任务到线程池
            forkJoinPool.submit(sumTask);
    
            // 4. 获取结果
            Integer result = sumTask.get();
    
            long end = System.currentTimeMillis();
    
            System.out.println(String.format("结果 %s 耗时 %sms", result, end - begin));
        }
    
        private static long[] genArray(int size) {
            long[] array = new long[size];
            for (int i = 0; i < size; i++) {
                array[i] = new Random().nextLong();
            }
            return array;
        }
    }
    

    我们通过调整阈值(THRESHOLD),可以发现耗时是不一样的。实际应用中,如果需要分割的任务大小是固定的,可以经过测试,得到最佳阈值;如果大小不是固定的,就需要设计一个可伸缩的算法,来动态计算出阈值。如果子任务很多,效率并不一定会高。
    未完待续。。。


    参考资料

    http://gee.cs.oswego.edu/dl/papers/fj.pdf
    https://docs.oracle.com/javase/tutorial/essential/concurrency/forkjoin.html
    https://www.ibm.com/developerworks/cn/java/j-lo-forkjoin/
    http://www.ibm.com/developerworks/cn/java/j-jtp11137.html

    本文来自:高爽|Coder,原文地址:http://blog.csdn.net/ghsau/article/details/46287769,转载请注明。

    展开全文
  • trt 基于Storm的轻量级实时计算框架
  • 大数据实时计算框架

    2021-03-24 13:49:04
    转自个人服务器:http://burningcloud.cn/article/172/index.html
    展开全文
  • GridGain 2.0发布了,GridGain是一个开源的网格计算框架,专著于提供平行计算能力,能够与JBoss和Spring相集成。GridGain 2.0新的属性包括:全动态地图启用;独一无二的提前和滞后的动态加载平衡能力等。点击进入...
    GridGain 2.0发布了,GridGain是一个开源的网格计算框架,专著于提供平行计算能力,能够与JBoss和Spring相集成。

    GridGain 2.0新的属性包括:全动态地图启用;独一无二的提前和滞后的动态加载平衡能力等。

    点击进入一下GridGain资源:

    下载 GridGain 2.0
    http://www.gridgain.org/downloads.html
    查看文档 Documentation
    http://wiki.gridgain.org/
    开发论坛 Developers Forums
    http://jive.gridgain.org/
     
    展开全文
  • 实时计算框架之一:Storm之框架搭建

    千次阅读 2015-01-17 21:50:40
    1 迟来的更新 首先,抱歉这么久没有更新博客了。最近一直失眠中,脑子一直很乱,...内容主要是实时计算框架Storm相关,为了更好的用户体验,所以开始调研云计算方面的知识,刚好以前没有研究学习过,所以也总结在这里

    1 迟来的更新

    首先,抱歉这么久没有更新博客了。最近一直失眠中,脑子一直很乱,各种事情又非常多,还请大家体谅。就这么莫名发了一天呆,本来想写点代码,打开电脑,却怎么也提不起任何心去思考;想要躺着睡觉,却头疼的要命。刚好手头上有前几天总结的文章,就顺势粘贴拷贝上来了。

    内容主要是实时计算框架Storm相关,为了更好的用户体验,所以开始调研云计算方面的知识,刚好以前没有研究学习过,所以也总结在这里,伴随着一起成长吧!


    2 实时计算框架Storm简介

    Storm是一个分布式计算框架,主要由Clojure编程语言编写。最初是由Nathan Marz[1]及其团队创建于BackType,[2]该项目在被Twitter取得后开源。[3]它使用用户创建的“管(spouts)”和“螺栓(bolts)”来定义信息源和操作来允许批量、分布式处理流式数据。最初的版本发布于2011年9月17日。

    Storm应用被设计成为一个拓扑结构,其接口创建一个转换“流”。它提供与MapReduce作业类似的功能,当遇到异常时该拓扑结构理论上将不确定地运行,直到它被手动终止。

    2013年,Apache软件基金会将Storm纳入它的孵化计划。当前最新版本是0.9.3,相关链接:https://storm.apache.org/

     

    2.1 基本构成

    Storm框架的核心主要由7部分组成。

    Topology:一个实时应用的计算任务被打包作为Topology发布,这同Hadoop的MapReduce任务相似。

    Spout:Storm中的消息源,用于为Topology生产消息(数据),一般是从外部数据源(如Message Queue、RDBMS、NoSQL、Realtime Log)不间断地读取数据并发送给Topology消息(tuple元组)。

    Bolt:Storm中的消息处理者,用于为Topology进行消息的处理,Bolt可以执行过滤,聚合, 查询数据库等操作,而且可以一级一级的进行处理。

    Stream:产生的数据(tuple元组)。

    Stream grouping:在Bolt任务中定义的Stream进行区分。

    Task:每个Spout或者Bolt在集群执行许多任务。

    Worker:Topology跨一个或多个Worker节点的进程执行。

     

    2.2 相关依赖

    2.2.1 集群ZooKeeper

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。

    ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

    Storm使用ZooKeeper来协调集群。

     

    2.2.2 消息队列ZeroMQ和JZMQ

    ZMQ(以下ZeroMQ简称ZMQ)是一个简单好用的传输层,像框架一样的一个socket library,他使得Socket编程更加简单、简洁和性能更高。是一个消息处理队列库,可在多个线程、内核和主机盒之间弹性伸缩。ZMQ的明确目标是“成为标准网络协议栈的一部分,之后进入Linux内核”。现在还未看到它们的成功。但是,它无疑是极具前景的、并且是人们更加需要的“传统”BSD套接字之上的一层封装。ZMQ让编写高性能网络应用程序极为简单和有趣。

    JZMQ是对ZMQ的Java绑定。

     

    2.2.3 消息队列Netty

    Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。

    也就是说,Netty 是一个基于NIO的客户,服务器端编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户,服务端应用。Netty相当简化和流线化了网络应用的编程开发过程,例如,TCP和UDP的socket服务开发。

    Storm使用Netty和ZeroMQ两种消息传递机制,默认是ZeroMQ。

     

    2.2.4 项目管理工具Maven

    Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。

    Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。

    使用Maven对要提交到Storm执行的程序进行打包。

     

    2.2.5 其他

    JDK,需要安装JDK 6以上版本。

    Python,一般Linux自带Python。

    Eclipse,Storm开发需要使用Eclipse。

     

     

    3 实时计算框架Storm搭建

    3.1 基本配置

    3.1.1 虚拟机环境建立

    安装虚拟机VirtualBox4.3.12(请勿安装更高版本,可能对Ubuntu 12.04支持性不佳),VirtualBox是一款开源虚拟机软件,占用资源小并且便于使用。


    安装完成后,建立虚拟机,安装Ubuntu 12.04版本系统。


    选择好系统后,点击下一步。


    根据当前系统内存大小,选择一个合适的内存大小。


    如果是新建安装的系统,需要创建虚拟硬盘,否则可以使用已有的虚拟硬盘文件。


    创建虚拟硬盘时,使用VirtualBox的磁盘映像,点击下一步。


    根据自己的需要选择硬盘分配方式,点击下一步。


    选择创建位置和硬盘大小,一般将硬盘创建较大一点比较好,防止后期硬盘空间不足。最后点击创建结束虚拟机的创建。

    创建完成后,点击启动,并选择Ubuntu的系统镜像文件所在位置,完成系统的安装。

    完成系统安装后,进入Ubuntu系统,然后点击VirtualBox菜单栏的设备选项,选择安装增强功能。



    3.1.2 安装JDK

    下载相关版本JDK,下载地址:

    http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

    下载后进行解压:

    tar –zxvf jdk-8u25-linux-x64.tar.gz

    将解压后的文件放到/usr/lib/jvm目录里:

    sudo mv jdk1.8.0_25 /usr/lib/jvm/

    修改环境变量,这里直接修改所有用户配置文件/etc/profile:

    sudo gedit /etc/profile

    在文件末尾追加以下信息:

    export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_25

    export JRE_HOME=/usr/lib/jvm/jdk1.8.0_25/jre

    export PATH=$JAVA_HOME/bin:$PATH

    更新profile文件:

    source /etc/profile

    使用java命令测试安装是否成功:

    java -version

    如果之前系统安装了OpenJDK,需要将默认JDK更新到当前版本:

    sudo update-alternatives --install /usr/bin/java java/usr/lib/jvm/jdk1.8.0_25/bin/java 300

    sudo update-alternatives --install /usr/bin/javac javac/usr/lib/jvm/jdk1.8.0_25/bin/javac 300

    sudo update-alternatives --config java

    sudo update-alternatives --config javac

    如果执行过程中提示有其他java相关命令没有更新,则按照上面的方法进行更新即可。



    3.1.3 安装Maven

    下载相关版本的Maven,下载地址:

    http://maven.apache.org/download.cgi

    下载后进行解压:

    tar –zxvf apache-maven-3.2.5-bin.tar.gz

    将解压后的文件放到/opt/maven目录下:

    sudo mv –f apache-maven-3.2.5 /opt/maven

    添加Maven到环境变量中:

    sudo gedit /etc/profile

    export M2_HOME=/opt/maven

    export PATH=$M2_HOME/bin:$PATH

    更新环境变量:

    source /etc/profile

    测试maven是否可以正常执行:

    mvn –v



    3.1.4 安装Eclipse

    可以直接在Ubuntu的软件中心进行Eclipse的安装。



    3.1.5 安装Storm

    3.1.5.1 安装ZooKeeper

    下载相关版本的ZooKeeper,下载地址:

    http://zookeeper.apache.org/releases.html#download

    下载后进行解压:

    tar –zxvf zookeeper-3.4.6.tar.gz

    将解压后的文件放到/opt/zookeeper目录下:

    sudo mv –f zookeeper-3.4.6 /opt/zookeeper

    添加ZooKeeper到环境变量中:

    sudo gedit /etc/profile

    export ZK_HOME=/opt/zookeeper

    export PATH=$ZK_HOME/bin:$PATH

    更新环境变量:

    source /etc/profile

    启动ZooKeeper:

    zkServer.sh start



    3.1.5.2 安装ZeroMQ

    下载相关版本的ZeroMQ,下载地址:

    http://zeromq.org/intro:get-the-software

    下载后进行解压:

    tar –zxvf zeromq-4.1.0-rc1.tar.gz

    进入目录,并进行编译安装:

    cd zeromq-4.1.0-rc1

    ./configure

    make

    make install

     

    3.1.5.3 安装JZMQ

    下载相关版本的JZMQ,下载地址:

    https://github.com/zeromq/jzmq

    下载后进行解压:

    unzip jzmq-master.zip

    进入目录,并进行编译安装:

    cd jzmq-master

    ./configure

    make

    make install

     

    3.1.5.4 安装Storm

    下载相关版本的Storm,下载地址:

    http://storm.apache.org/downloads.html

    下载后进行解压:

    tar –zxvf apache-storm-0.9.3.tar.gz

    将解压后的文件放到/opt/storm目录下:

    sudo mv apache-storm-0.9.3 /opt/storm

    添加Storm到环境变量中:

    sudo gedit /etc/profile

    export STORM_HOME=/opt/storm

    export PATH=$ STORM_HOME/bin:$PATH

    更新环境变量:

    source /etc/profile

     

    3.2 本地模式

    进入Storm安装目录下的conf目录,并修改配置文件:storm.yaml,修改内容如下:

    # 配置ZooKeeper集群节点

    storm.zookeeper.servers:

        -"localhost"

     

    # 配置Nimbus节点

    nimbus.host: "localhost"

     

    # 配置DRPC节点

    drpc.servers:

        -"localhost"

     

    3.3 集群模式

    进入Storm安装目录下的conf目录,并修改配置文件:storm.yaml,修改内容如下:

    # 配置ZooKeeper集群节点

    storm.zookeeper.servers:

        - "nodel01"

        - "nodel02"

        - "nodel03"

     

    # 配置Nimbus节点

    nimbus.host: " nodel04"

     

    # 配置DRPC节点

    drpc.servers:

        - " nodel04"

     

    3.4 启动Storm

    首先,启动集群ZooKeeper:

    zkServer.sh start

    对于Nimbus节点,启动方式如下:

    storm nimbus &

    storm ui &

    对于Supervisor节点,启动方式如下:

    storm supervisor &

    启动drpc守护进程:

    storm drpc &

    启动logviewer守护进程:

    storm logviewer &

    使用jps命令查看启动的进程信息:

    jps




    4 进一步思考

    自Google的Hadoop成功以来,陆陆续续,各式各样的并行处理框架不断出现,云服务的概念也逐步改变了人们的思考方式和做事方法,能有机会去搭建这样一个平台,还是非常高兴的,也愿自己能借着这个机会再次大幅度提升一下水平。

    有些事情想要处理,却总是加上一个期限,这个无疑最让人烦躁的吧。就像网购一样,一旦买了一样很重要的东西,就会每时每刻去关注它的动态,怎么还不发货?怎么快递这么慢?今天几点送到?

    亟待调整心态,有什么好方法的朋友请推荐几个~~~多谢~~~


    展开全文
  • tinympi4j 是一款微型的 java 分布式离线计算框架, 实现原理如图: 特性 简单直观, 没有任何学习难度 slave支持多个任务并发/并行执行 使用HTTP协议通信 场景:
  • 这是一篇JAVA和网格计算的论文,本人觉得可以就上传了,需要者请看!
  • tar -zvxf jdk-7u65-linux-x64.tar.gz 环境变量配置参考 .bashrc vi ~/.bashrc source ~/.bashrc java -version
  • Samza是近日由LinkedIn开源的一项技术,它是一个分布式流处理框架,专用于实时数据的处理,非常像Twitter的流处理系统Storm。不同的是Samza基于Hadoop,而且使用了LinkedIn自家的Kafka分布式消息系统。Storm和Samza...
  • RMI:Java中的分布式计算框架

    千次阅读 2018-05-15 18:22:33
    Java分布式计算解决方案:RMI从JDK 1.1开始就是Java平台的核心部分,因此,它存在于任何一台1.1 Java虚拟机中。所有RMI系统均采用相同的公开协议,所以,所有Java 系统均可直接相互对话,而不必事先对协议进行转换。...
  • JCLEC是用Java开发的通用进化计算框架。 它的一些主要功能是:多层体系结构,高度可重用且可与其他系统集成,易于使用以及许多已实现的算法和操作
  • 实时计算框架之二:Storm之入门实例

    千次阅读 2015-03-04 10:41:44
    上次总结了一下实时计算框架Storm的搭建过程,经过这段时间,在这之上又有了更进一步的发展。期间遇到了许多难点,下面就一点一点介绍给大家,来看看一个实时的云计算框架的强大之处! 本篇文章开始的引用使用...
  • Java示例中学习火花 开源集群计算框架apache spark学习示例以Java编码读取回购中的wiki文件
  • java编译,基于RPC框架的阶乘计算,客户端与服务端一体,下载傻瓜式操作,用java编译软件eclipse打开项目就行。
  • Storm作为一个开源的分布式实时计算框架,其内部实现使用了一些常用的技术,这里是对这些技术及其在Storm中作用的概括介绍。以此为基础,后续再深入了解Storm的内部实现细节。 1. Zookeeper集群 Zookeeper是一个...
  • Java后端开发框架

    万次阅读 多人点赞 2019-09-09 15:31:22
    Java web开发框架了解 web开发 前端–页面的设计、路由、展示—静态资源(HTML、CSS、JS)–web服务器(nginx)-- Vue 技术栈开发 后端–对外提供(类)RESTful风格的API—数据库交互-- web应用服务器(tomcat)...
  • // Send 10 events to the remote Flume agent. That agent should be // configured to listen with an AvroSource. for (int i = 200; i < 250; i++) { String sampleData = "Hello Flume!...
  • NULL 博文链接:https://shenxueliang.iteye.com/blog/1592577
  • Java集合框架总结

    万次阅读 多人点赞 2019-08-08 09:13:16
    集合框架:用于存储数据的容器。 集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。 任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法。 接口:表示集合的抽象数据类型。接口...
  • JAVAOpenMP并行计算框架

    2010-10-25 09:20:41
    JAVAOpenMP并行计算框架JAVAOpenMP并行计算框架JAVAOpenMP并行计算框架JAVAOpenMP并行计算框架JAVAOpenMP并行计算框架
  • 采用java8的并行计算,完成1到400亿的数列求和,并行计算完成时间3秒左右,采用普通计算完成时间13秒左右,效果明显
  • 为您提供PowerJob java任务调度框架下载,PowerJob是全新一代分布式调度与计算框架,支持CRON、API、固定频率、固定延迟等调度策略,提供工作流来编排任务解决依赖关系,使用简单,功能强大,文档齐全,能让您轻松...
  • BeanShell java 表达式运算框架,及其方便快捷(附jar包,工具类,测试类)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 317,409
精华内容 126,963
关键字:

java实时计算框架

java 订阅