`

infinispan5的MapReduce使用

    博客分类:
  • J2EE
 
阅读更多

参考

https://docs.jboss.org/author/display/ISPN/Infinispan+Distributed+Execution+Framework#InfinispanDistributedExecutionFramework-MapReducemodel

 

 

首先下载我们的infinispan5的运行环境

https://github.com/infinispan/infinispan-quickstart.git

 

 

中org.infinispan.quickstart.clusteredcache.distribution.NodeClient类为

 

 

package org.infinispan.quickstart.clusteredcache.distribution;

import java.util.Date;
import java.util.Iterator;
import java.util.Map;
import java.util.StringTokenizer;
import java.util.Map.Entry;

import org.infinispan.Cache;
import org.infinispan.config.Configuration;
import org.infinispan.config.GlobalConfiguration;
import org.infinispan.config.Configuration.CacheMode;
import org.infinispan.distexec.mapreduce.Collator;
import org.infinispan.distexec.mapreduce.Collector;
import org.infinispan.distexec.mapreduce.MapReduceTask;
import org.infinispan.distexec.mapreduce.Mapper;
import org.infinispan.distexec.mapreduce.Reducer;
import org.infinispan.manager.DefaultCacheManager;
import org.infinispan.manager.EmbeddedCacheManager;

/**
 * @author :xiaofancn
 * @version :2011-11-30 下午10:15:44
 * 
 */

public class NodeClient {

	public static EmbeddedCacheManager createCacheManagerProgramatically() {

		return new DefaultCacheManager(GlobalConfiguration
				.getClusteredDefault().fluent().transport()
				.addProperty("configurationFile", "jgroups.xml").build(),
				new Configuration().fluent().mode(CacheMode.DIST_ASYNC).hash()
						.numOwners(2).build());
	}

	static class WordCountMapper implements
			Mapper<String, String, String, Integer> {
		private static final long serialVersionUID = 1L;

		@Override
		public void map(String key, String value, Collector<String, Integer> c) {
			StringTokenizer tokens = new StringTokenizer(value);
			while (tokens.hasMoreElements()) {
				System.out.println(key + "=================" + value);
				String s = (String) tokens.nextElement();
				c.emit(s, 1);
			}
		}
	}

	static class WordCountReducer implements Reducer<String, Integer> {
		/** The serialVersionUID */
		private static final long serialVersionUID = 1901016598354633256L;

		@Override
		public Integer reduce(String key, Iterator<Integer> iter) {
			int sum = 0;
			while (iter.hasNext()) {
				Integer i = (Integer) iter.next();
				sum += i;
			}
			System.out.println(key+":"+sum);
			return sum;

		}
	}

	public static void main(String[] args) {

		Cache<String, String> cache = createCacheManagerProgramatically()
				.getCache("Demo");
		
		
		int count = 1000000000;
		for (int i = 0; i < count; i++) {
			cache.put("" + i, "" + i);
		}
		cache.put("" + count, "" + 4);

		System.out.println(new Date());
		Long start = System.currentTimeMillis();

		MapReduceTask<String, String, String, Integer> task = new MapReduceTask<String, String, String, Integer>(
				cache);
		task.mappedWith(new WordCountMapper()).reducedWith(
				new WordCountReducer());
		String mostFrequentWord = task
				.execute(new Collator<String, Integer, String>() {
					@Override
					public String collate(Map<String, Integer> reducedResults) {
						String mostFrequent = "";
						int maxCount = 0;
						for (Entry<String, Integer> e : reducedResults
								.entrySet()) {
							Integer count = e.getValue();
							if (count > maxCount) {
								maxCount = count;
								mostFrequent = e.getKey();
							}
						}
						return mostFrequent;
					}

				});
		System.out.println(new Date());
		System.out.println(System.currentTimeMillis() - start);
		System.out.println("The most frequent word is " + mostFrequentWord);

	}

}
 

分别运行

org.infinispan.quickstart.clusteredcache.distribution.Node0

org.infinispan.quickstart.clusteredcache.distribution.Node1

org.infinispan.quickstart.clusteredcache.distribution.Node2

  org.infinispan.quickstart.clusteredcache.distribution.NodeClient  

分享到:
评论

相关推荐

    infinispan

    不使用Maven的用户也可以从官方网站下载预编译的二进制文件,甚至运行Infinispan服务器,而非仅限于嵌入式或对等模式。 #### 运行模式:客户端/服务器 vs. 对等模式 Infinispan提供两种交互方式:嵌入式模式和...

    Infinispan Data Grid Platform

    至于memcache,Infinispan通过兼容memcache协议,让现有的memcache客户端能够无缝接入Infinispan的数据网格,从而扩展了其使用范围和场景。 Infinispan还支持全文搜索和索引功能,这得益于其集成的lucence查询接口...

    castmapr:CastMapR - 用于 Hazelcast 的 MapReduce - 停产!

    CastMapR 的 API 深受 Infinispan 的 MapReduce 实现的启发(感谢 RedHat 的人!),它完全透明地可用于 HazelcastClient 连接。 CastMapR 支持在 IMap、IList 和 MultiMap 上执行 MapReduce 任务,而

    Infinispan网格缓存框架

    5. **语言绑定**:Infinispan计划提供对多种编程语言的支持,不仅限于Java,还计划支持memcached协议和Hot Rod协议,使得非Java应用也能方便地使用Infinispan。 6. **管理**:对于大规模部署,Infinispan提供了与...

    Infinispan分布式网格数据平台

    **Infinispan分布式网格数据平台** Infinispan是一个高度可扩展的、高性能的数据网格系统,主要用于在分布式环境中存储和处理大量数据。它被设计为一个内存数据网格,能够提供高速缓存服务,同时也支持持久化存储。...

    infinispan作者解读infinispan框架

    5. **灵活的编程模型**:Infinispan支持多种编程语言和API,包括Java、RESTful API等,使得开发者能够轻松地集成Infinispan到现有的应用程序架构中。 #### 四、Infinispan与JBoss Cache的关系 Infinispan与JBoss ...

    infinispan-query-7.1.0.Alpha1.zip

    另一方面,logback是Java社区广泛使用的日志框架,它取代了log4j并提供了更高的性能和灵活性。在这个项目中,web-logback-master是一个针对logback的定制化实现,它通过HTML5 SSE技术,使得日志信息能够在现代浏览器...

    infinispan-spring-5.1.0.ALPHA2.zip

    Infinispan与Spring框架的整合,使得在Spring应用中使用Infinispan变得更加便捷,极大地提升了开发效率和应用性能。 在标题提到的“infinispan-spring-5.1.0.ALPHA2.zip”中,我们可以看到这是一个早期版本的...

    infinispan-6.0.2.Final

    infinispan-6.0.2.Final

    infinispan-simple-tutorials:Infinispan简单的教程

    infinispan-简单教程 Infinispan简单教程这是一组简单的教程,解释了如何以最直接的方式使用Infinispan的某些功能。 为了构建教程,您将需要JDK 8 Apache Maven 3.x 一些示例使用Infinispan服务器。 下载最新的...

    infinispan-server-rest-5.2.20.Final.zip

    《Infinispan Server REST API 5.2.20.Final:开源项目与ElasticSearch安全增强——Search Guard...对于开发和运维人员来说,深入理解和掌握这两个工具的使用,无疑会提高他们在大数据环境下的工作效率和系统的安全性。

    infinispan-client-hotrod-8.2.0.Final.zip

    这个版本可能是Infinispan的稳定版,Final标识意味着经过充分测试,适合生产环境使用。 【描述】"semver-git.zip" 提及的是一个与Git集成的Gradle插件,该插件利用语义版本控制(SemVer)规则来管理项目的版本号。...

    infinispan6.x入门实例

    Infinispan 入门 由于熟悉eclipse 环境,所以用javaEE eclipse 开发一个实例 ...对于复制,使用'REPL'。最后,为 无效“INV”。如果高速缓存模式设置为“本地”,所讨论的高速缓存将不支持聚类即使其高速缓存管理器一样

    hibernate-search-infinispan-4.1.0.CR3.jar

    hibernate-search-infinispan-4.1.0.CR3.jar

    infinispan-operator:Infinispan运算符

    例如,使用以下命令编译和构建Infinispan Operator: $ make build (可选)可以在运行时构建docker映像: $ make image IMAGE=image_name TAG=image_tag 或者您的Docker版本没有多阶段构建 $ make image

    infinispan-spring-boot:Infinispan Spring Boot启动器。 在Spring Boot应用程序中使用此启动程序,以帮助您在嵌入式和客户端服务器模式下使用Infinispan + Spring集成

    5. **客户端服务器模式**:如果需要更复杂的部署模式,如集群环境,可以使用Infinispan的客户端服务器模式,让Spring Boot应用作为客户端连接到Infinispan服务器集群。 通过infinispan-spring-boot-master这个项目...

    infinispan-cachestore-jdbc-8.2.3.Final.zip

    《Infinispan缓存存储与Spring集成Java DSL解析》 在现代的分布式系统中,数据缓存扮演着至关重要的角色,它能够显著提升应用程序的性能。Infinispan是JBoss公司推出的一个强大且高度可配置的内存数据网格平台,...

    2021-leaderboard-service:排行榜服务,与Quarkus和Infinispan结合使用

    2021排行榜服务排行榜服务,与Quarkus和Infinispan结合使用使用Docker运行Infinispan docker run -v $(pwd):/user-config -p 11222:11222 -e USER="admin" -e PASS="pass" infinispan/server:12.0.1.Final 安排部署...

    infinispan-core-7.0.2.Final.zip

    1. **数据分布**:Infinispan使用一致性哈希来分布数据,确保在集群中的数据均匀分布,支持自动故障转移,确保高可用性。 2. **缓存模式**:支持多种缓存模式,如本地缓存、分布式缓存、复制缓存和异步缓存,以适应...

    Infinispan Data Grid Platform Definitive Guide

    - **一致性哈希**:Infinispan使用一致性哈希算法来确定数据项在集群中的位置,这种算法能够确保即使在节点加入或离开集群时也能保持较高的数据分布均匀性。 - **数据分区**:数据被分成多个分区,并分配到不同的...

Global site tag (gtag.js) - Google Analytics