问题标签 [distributed-cache]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
caching - 如何在hadoop map reduce作业中有效地缓存大文件?
我的工作流程如下:
我正在处理大量数据。我有一个MapFile
需要缓存的。这个文件的大小现在是 1 GB,但我希望它最终会增长。
MapFile 的内容是这样的:
- 在 中
map-phase
,我处理来自输入文件的每条记录TextInputFormat
。我解析该行(由标记分割)并检索前两个标记,token1 和 token2。
如果 (token1,token2) 对不在缓存文件中,那么我调用 API,获取信息,保存在缓存中(如果可能)并继续处理。
我在这里看到的主要问题是
如何在所有节点的缓存中获取大文件。DistributedCache 通过将文件复制到本地节点来工作。但由于这个文件更大,这里涉及到网络流量,对于我的日常工作,我不想继续分发它。
如何高效查找 MapFile(cache),整个 mapFile 不会在内存中。
如何写入作为我的缓存的 MapFile。
谢谢
hadoop - Google File System中Hadoop分布式文件系统的分布式缓存有什么类似的功能
我在Google Compute Engine中部署了一个 6 节点的Hadoop 集群。
我使用的是Google 文件系统(GFS) 而不是Hadoop 文件分发系统(HFS)。
. 因此,我想以与 HDFS 中的分布式缓存方法相同的方式访问GFS中的文件
请告诉我一种以这种方式访问文件的方法。
hazelcast - Hazelcast 分布式地图
我们的应用程序中有一个 Hazelcast 分布式缓存。缓存在低负载下表现良好,但当负载和网络延迟变高时,缓存在节点之间变得不同步。以前有人观察过这种行为吗?我在本地机器上使用了两个节点。
hadoop - Hadoop:什么时候在 reducer 中调用 setup 方法?
据我了解,reduce 任务分为三个阶段。
Shuffle、Sort 和实际的 reduce 调用。
所以通常在 hadoop 作业的输出中,我们会看到类似 map 0% reduce 0% map 20% reduce 0% 的内容。. . 地图 90% 减少 10% 。. .
所以我假设reduce任务在所有映射完成之前开始,这种行为由慢启动配置控制。
现在我还不明白reducer的setup方法是什么时候真正被调用的。
在我的用例中,我有一些文件要在 setup 方法中解析。该文件大小约为 60MB,是从分布式缓存中提取的。在解析文件时,配置中的另一组数据可以更新刚刚解析的记录。在解析和可能的更新之后,文件存储在 HashMap 中以便快速查找。所以我希望尽快调用这个方法,可能在映射器还在做他们的事情的时候。
是否有可能做到这一点?或者这已经发生了?
谢谢
hadoop - FileNotFoundException 但文件存在
我在尝试读取添加到分布式缓存的文件时在 Hadoop 中遇到此异常,奇怪的是该文件存在于给定位置
我在使用开始工作之前添加文件
我正在尝试从我的映射器中的设置方法中读取文件,使用
正如我所说,我可以确认该文件在本地系统上,但是抛出了异常。
我在一台计算机上以伪分布式模式运行该作业。
有任何想法吗?
谢谢
distributed-caching - 什么是 Dache 中的 SlidingExpiration 时间跨度?
SlidingExpiration
Dache 中 AddOrUpdate 方法中的时间跨度到底是什么?
使用更好SlidingExpiration
还是AbsoluteExpiration
,
我的意思是有什么区别?
caching - 是否可以从 Hadoop Partitioner 中的分布式缓存中获取对象?
Hadoop 的分布式缓存允许开发人员将小文件添加到 MR 上下文中,这些文件可用于在 Map 或 Reduce 阶段获取附加信息。但是,我没有找到在Partitioner
. 我需要自定义中的一个小文件(早期 MR 作业的输出)的内容Partitioner
来确定如何将密钥发送到减速器。
不幸的是,我找不到任何有用的文档,我目前唯一的想法是一种有点“hackish”的方法,它涉及将文件的内容序列化为 Base64 字符串并将其放入Configuration
. Configuration
通过让 s 实现 s 可以在分区器中使用它Configurable
。虽然文件对于这种方法来说足够小(大约 50KB),但我认为分布式缓存更适合这种方法。
编辑:
我发现了另一种我认为稍微好一点的方法。由于我需要在分区器中访问的文件位于 HDFS 上,因此我将其完全限定URI
在Configuration
. 然后,在我Partitioner
的setConf
方法中,我可以通过重新创建路径new Path(new URI(conf.get("some.file.key")))
并在Configuration
. 虽然仍然很hackish...
hazelcast - Hazelcast - OperationTimeoutException
我正在使用 Hazelcast 3.3.1 版。
我有一个使用 c3.2xlarge 服务器在 aws 上运行的 9 节点集群。
我正在使用分布式执行器服务和分布式地图。
分布式执行器服务使用单线程。分布式映射配置为无复制和无近缓存,并使用 Kryo 序列化程序存储大约 100 万个大小为 1-2kb 的对象。
我的用例如下:
- 所有 9 个节点不断在分布式执行器服务上执行同步远程操作,每秒产生约 20k 次命中(每个节点约 ~2k)。
- 使用 Hazelcast API 执行调用:com.hazelcast.core.IExecutorService#executeOnKeyOwner。
- 每个操作访问拥有分区的节点上的分布式映射,使用存储的对象进行一些计算并将对象存储到映射中。(为此,我使用 IMap 对象的 get 和 set API)。
每隔一段时间,Hazelcast 就会遇到超时异常,例如:
com.hazelcast.core.OperationTimeoutException: No response for 120000 ms。中止调用!BasicInvocationFuture{invocation=BasicInvocation{ serviceName='hz:impl:mapService', op=GetOperation{}, partitionId=212, replicaIndex=0, tryCount=250, tryPauseMillis=500, invokeCount=1, callTimeout=60000, target=Address[ 172.31.44.2]:5701, backupsExpected=0, backupsCompleted=0}, response=null, done=false} 没有收到响应!备份预期:0 备份完成:0
在某些情况下,我看到地图分区开始迁移,这让事情变得更糟,节点不断地离开并重新加入集群,我可以克服这个问题的唯一方法是重新启动整个集群。
我想知道是什么可能导致 Hazelcast 阻止地图获取操作 120 秒?
我很确定这与网络无关,因为同一服务器上的其他服务运行良好。另请注意,服务器大多处于空闲状态(~70%)。
对我的用例的任何反馈将不胜感激。
mapreduce - 在 map -reduce 中读取多个文件到分布式缓存
我目前正在尝试将两个文件添加到分布式缓存。但是,当我尝试读取它时,第二个文件正在读取与第一个文件相同的数据,尽管这两个文件包含完全不同的数据。知道为什么会这样吗?
apache-pig - Pig 分布式缓存
getShipFiles
和getCacheFiles
在课堂上有什么区别EvalFunc
?
假设此方法中指定的任何文件都可用于exec
分布式缓存中的方法