问题标签 [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.
hadoop - hive : 从分布式缓存中删除东西
我可以通过添加东西到分布式缓存
然后运行一堆HQL。
现在当我有一系列命令时,如下所示
在这种情况下largelookuptable1
,第二个查询不必要地可用。有没有办法在第二个查询运行之前摆脱它?
java - Gemfire - 缓存创建时出现 IllegalStateException
我正在尝试运行 Gemfire 客户端应用程序,但在运行以下代码时出现 IllegalStateException:
线程“main”java.lang.IllegalStateException 中的异常:DynamicRegionFactory 的客户端池必须配置为启用队列设置为 true。
我不知道如何将启用队列设置为 true。我会很感激一些代码,而不是像“检查这部分文档”这样的答案。我已经到处看了。
java - 如何在分布式缓存产品中传达在多个分布式地图上运行的事务
我所说的分布式缓存产品是指 Coherence 或 Hazelcast。我将使用 Hazelcast 作为示例。
假设我有一个在多个地图中保持状态的对象:
请注意, associate() 函数需要是事务性的,因为它修改了多个映射。由于狗和主人以某种方式关联,因此在方法完成之前数据可能处于不一致状态。现在,如果另一个类从分布式内存中读取,它不知道事务正在发生,并且可能会不一致地看到数据。
现在,Hazelcast 已经分布式锁来解决这样的问题,但性能影响是什么?假设 doSomething() 开销很大(例如,在本地复制两个地图),在这种情况下,可能不足以锁定多个客户端。
这个分布式同步问题有标准解决方案吗?
java - 所有地图任务的 Hadoop 缓存文件
我的地图功能必须为每个输入读取一个文件。该文件根本没有改变,它只是为了阅读。我认为分布式缓存可能对我有很大帮助,但我找不到使用它的方法。我认为不推荐使用我需要覆盖的 public void configure(JobConf conf) 函数。那么 JobConf 肯定会被弃用。所有 DistributedCache 教程都使用不推荐使用的方式。我能做些什么?是否有另一个我可以覆盖的配置功能?
这些是我的地图功能的第一行:
我想缓存那个 MFile,这样我的地图函数就不需要一遍又一遍地查看它
hadoop - Hadoop DistributedCache 无法报告状态
在 Hadoop 作业中,我正在映射多个 XML 文件并为每个元素过滤一个 ID (from < id>-tags)
。由于我想将作业限制为一组特定的 ID,因此我读入了一个大文件(2.7 GB 中大约有 2.5 亿行,每行只有一个整数作为 ID)。所以我使用了一个分布式缓存,在 Mapper 的方法中使用 BufferedReader 解析文件setup()
并将 ID 保存到 HashSet。
现在当我开始工作时,我得到了无数
Task attempt_201201112322_0110_m_000000_1 failed to report status. Killing!
在执行任何地图作业之前。
集群由 40 个节点组成,并且由于在DistributedCache
执行作业的任何任务之前将 a 的文件复制到从节点,我假设失败是由大型HashSet
. 我已经增加到mapred.task.timeout
2000s。当然我可以把时间再提高一点,但实际上这段时间应该足够了,不是吗?
由于DistributedCache's
曾经是一种“有效地分发大型只读文件”的方法,我想知道是什么导致了这里的失败,以及是否有另一种方法可以将相关 ID 传递给每个地图作业?
hadoop - 文件是否需要在 HDFS 中才能在分布式缓存中使用?
我明白了
如果我尝试将本地文件添加到 hadoop 中的分布式缓存。当文件在 HDFS 上时,我没有收到此错误(显然,因为它使用的是预期的 FS)。有没有办法在分布式缓存中使用本地文件而无需先将其复制到 hdfs?这是一个代码片段:
谢谢
hadoop - Hadoop分布式缓存不起作用
我是 Hadoop 新手。我正在使用 Hadoop 0.22。在驱动程序中,我使用了以下代码:
在 Map 类中,我必须使用什么代码将 jar 添加到本地类路径中?
更多细节
我有一个工作需要在地图和减少阶段 htmlunit.jar。我使用上面的代码将此 jar 添加到类路径中,但是当我提交工作时,我在使用 htmlunit 引用的行中有一个 ClassNotFoundException。如果上面的代码没关系,DistributedCache 会自动在 tasktrackers 类路径中添加 jar,可能是什么问题?提交作业时还必须使用选项 -libjars htmlunit.jar 吗?我必须使用另一个 hadoop 组件?
java - 在一个驱动程序中运行相关的 hadoop 作业
我目前有两个 hadoop 作业,其中第二个作业需要将第一个作业的输出添加到分布式缓存中。目前我手动运行它们,所以在第一个作业完成后,我将输出文件作为参数传递给第二个作业,其驱动程序将其添加到缓存中。
第一份工作只是一个简单的仅限地图的工作,我希望在按顺序执行两个工作时可以运行一个命令。
任何人都可以帮我编写代码以将第一个作业的输出放入分布式缓存中,以便可以将其传递给第二个作业吗?
谢谢
编辑:这是工作 1 的当前驱动程序:
这是 job2 的驱动程序。作业 1 的输出作为第一个参数传递给作业 2 并加载到缓存中
hadoop - Hadoop分布式缓存
我已经阅读了来自 Apache 和 Yahoo 的 DistributedCache 教程。我仍然对一件事感到困惑。假设我有一个要复制到所有数据节点的文件。所以,我
DistributedCache.addCacheFile(new URI(hdfsPath),job)
在工作驱动程序中使用以使文件可用。然后,我DistributedCache.getLocalCacheFiles(job)
在我的 Mapper 中调用。
现在,我想根据这个文件的内容在数据节点上创建一个数组,这样每次 map() 运行时,它就可以访问数组的元素。我可以这样做吗?我很困惑,因为如果我读取缓存文件并在 Mapper 类中创建数组,它似乎会为 Mapper 的每个新输入创建数组,而不是每个 Mapper 一次。这部分实际上是如何工作的(即,我应该在哪里/何时创建数组)?
hadoop - 如何在 Hadoop Map/Reduce 作业中访问 DistributedCache?
我正在尝试使用GenericOptionsParser
'-files
标志将一个小文件传递给我正在运行的作业:
这应该将作业发送到我的集群并附加 local-file.csv 以便在需要时可供 Mapper/Reducer 使用。当我在伪分布式模式下运行它时效果很好,但是当我在集群上启动作业时,似乎找不到该文件。我正在使用映射器的setup
方法读取文件,如下所示:
当作业运行时,我得到以下异常:
知道我做错了什么吗?谢谢。