小编Ani*_*ain的帖子

运行Apache Spark Job时由对等方重置连接

我们有两个HDP集群的设置让我们称它们为A和B.

集群一个节点:

  • 它包含总共20台商品机器.
  • 有20个数据节点.
  • 在配置namenode HA时,有一个活动名称节点和一个备用名称节点.

CLUSTER B NODES:

  • 它包含总共5台商品机器.
  • 有5个数据节点.
  • 没有配置HA,并且此群集具有一个主要名称节点和一个辅助名称节点.

我们的应用程序中有三个主要组件,它们对传入的文件执行ETL(提取,转换和加载)操作.我将这些组件分别称为E,T和L.

组件E特征:

  • 该组件是Apache Spark Job,它仅在Cluster B上运行.
  • 它的工作是从NAS存储中获取文件并将它们放入集群B中的HDFS中.

组件T特征:

  • 该组件也是Apache Spark Job,它在Cluster B上运行.
  • 它的工作是获取组件E编写的HDFS文件,转换它们,然后将转换后的文件写入集群A中的HDFS.

组分L特征:

  • 该组件也是Apache Spark作业,它仅在集群A上运行.
  • 它的工作是拾取组件T写入的文件并将数据加载到群集A中的Hive表.

组件L是所有三个组件中的宝石,我们没有遇到任何故障.组分E中存在轻微的无法解释的毛刺,但组分T是最麻烦的.

组件E和T都使用DFS客户端与namenode进行通信.

以下是我们在运行组件T时间歇性地观察到的异常的摘录:

clusterA.namenode.com/10.141.160.141:8020. Trying to fail over immediately.
java.io.IOException: Failed on local exception: java.io.IOException: Connection reset by peer; Host Details : local host is: "clusterB.datanode.com"; destination host is: "clusterA.namenode.com":8020;
            at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:782)
            at org.apache.hadoop.ipc.Client.call(Client.java:1459)
            at org.apache.hadoop.ipc.Client.call(Client.java:1392)
            at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:229)
            at com.sun.proxy.$Proxy15.complete(Unknown Source)
            at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.complete(ClientNamenodeProtocolTranslatorPB.java:464)
            at sun.reflect.GeneratedMethodAccessor1240.invoke(Unknown Source) …
Run Code Online (Sandbox Code Playgroud)

rpc tcp hdfs hortonworks-data-platform namenode

13
推荐指数
1
解决办法
1856
查看次数

布隆过滤器的替代方案

我尝试过使用布隆过滤器来执行成员资格测试。我希望对 800 亿个条目执行成员资格测试,只允许发生大约 100 次冲突,即只有 100 个条目可以给出误报结果。

我知道这可以通过布隆过滤器来实现,但使用确定每个条目所需的位数以及给定允许的误报率的哈希函数数量的公式。我认为我最终会使用 270 GB 内存和 19 个哈希函数。

我还查看了 Cuckoo 过滤器,但它的内存要求与我的要求不符。我的要求如下:

  1. 每个元素最多使用 6 位
  2. 使用不超过 7-8 个哈希函数。

除了上面提到的之外,有人可以建议我使用一种概率数据结构来帮助实现我的要求吗?

bloom-filter data-structures

5
推荐指数
1
解决办法
4369
查看次数

Ignite 内部写入

我正在使用 Ignite 1.7.0 并正在测试 Apache Ignite 的 write Behind 功能。提出这个问题的动机是为了更好地了解在 Apache Ignite 中启用 write Behind 功能时幕后发生的情况。

我有一个 Ignite 客户端程序,它将在测试缓存中插入 20 个条目(称为“test_cache”)。

Ignite 服务器运行在同一台计算机上,但运行在不同的 JVM 上。

Ignite 缓存具有以下配置设置:

  1. 读通、写通和后写已启用。
  2. 同花顺尺寸为 13
  3. 刷新线程数为 1

所有其他属性均设置为默认值。

除此之外,还有一个为缓存配置的缓存存储,代码如下:

package com.ignite.genericpoc;

import java.util.Collection;
import java.util.Map;

import javax.cache.Cache.Entry;
import javax.cache.integration.CacheLoaderException;
import javax.cache.integration.CacheWriterException;

import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.cache.store.CacheStore;
import org.apache.ignite.lang.IgniteBiInClosure;
import org.apache.ignite.resources.CacheNameResource;
import org.apache.ignite.resources.IgniteInstanceResource;

public class IgniteStoreTest implements CacheStore<String, String> {

@IgniteInstanceResource
Ignite gridReference;

@CacheNameResource
String cacheName;

@Override
public String load(String key) throws CacheLoaderException {
    System.out.println("load …
Run Code Online (Sandbox Code Playgroud)

caching gridgain ignite

4
推荐指数
1
解决办法
1202
查看次数