问题标签 [google-hadoop]

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.

0 投票
1 回答
4062 浏览

apache-spark - Spark 上的 Google Cloud Storage 连接器问题

我正在尝试在 Mac OS 上的 Spark 上安装 Google Cloud Storage,以对我的 Spark 应用程序进行本地测试。我已阅读以下文档(https://cloud.google.com/hadoop/google-cloud-storage-connector)。我在 spark/lib 文件夹中添加了“gcs-connector-latest-hadoop2.jar”。我还在 spark/conf 目录中添加了 core-data.xml 文件。

当我运行我的 pyspark shell 时,我收到一个错误:

我不确定下一步该去哪里。

0 投票
1 回答
1450 浏览

hadoop - 使用 globStatus 和 Google Cloud Storage 存储桶作为输入时无法运行 Spark 作业

我正在使用 Spark 1.1。我有一个 Spark 作业,它仅在存储桶下寻找特定模式的文件夹(即以...开头的文件夹),并且应该只处理那些。我通过执行以下操作来实现这一点:

但是,在 Google 云存储路径上运行此作业时:gs://rsync-1/2014_07_31*(使用最新的谷歌云存储连接器 1.2.9),我收到以下错误:

当我在本地文件夹上运行此作业时,一切正常。

hadoop-config 是我用于在 Google Compute Engine 上部署 Spark 集群的存储桶(使用 bdutil 0.35.2 工具)

0 投票
1 回答
1197 浏览

hadoop - 在相对较大的输入上运行 Spark 作业时的内存问题

我正在运行一个有 50 台机器的 spark 集群。每台机器都是一个具有 8 核和 50GB 内存的 VM(Spark 似乎可以使用 41 个)。

我在几个输入文件夹上运行,我估计输入的大小约为 250GB gz 压缩。

虽然在我看来,我使用的机器数量和配置似乎足够了,但在运行约 40 分钟后作业失败,我可以在日志中看到以下错误:

并且:

我该如何调试这样的问题?

编辑:我找到了问题的根本原因。就是这段代码:

特别是为每个文件分配一个大小为 40M 的缓冲区,以便使用 BufferedInputStream 读取文件的内容。这会导致堆栈内存在某个点结束。

事情是:

  • 如果我逐行读取(不需要缓冲区),那将是非常低效的读取
  • 如果我分配一个缓冲区并为每个文件读取重用它 - 是否有可能在并行意义上?还是会被多个线程覆盖?

欢迎任何建议...

编辑 2:通过将字节数组分配移到迭代器之外来修复第一个内存问题,因此它被所有分区元素重用。但是仍然有 new String(buffer, "UTF-8").trim()) 为拆分目的而创建的 - 这是一个每次都会创建的对象。我可以使用字符串缓冲区/构建器,但是如何在没有字符串对象的情况下设置字符集编码?

0 投票
1 回答
1825 浏览

hadoop - 运行 Spark 作业时出现奇怪的错误

我正在运行一个包含 80 台机器的 spark 集群。每台机器都是一个具有 8 核和 50GB 内存的 VM(Spark 似乎可以使用 41 个)。

我在几个输入文件夹上运行,我估计输入的大小约为 250GB gz 压缩。

我在驱动程序日志中收到错误,我不知道该怎么做。示例(按照它们在日志中出现的顺序):

由于我的作业类(Phase0)不是任何堆栈跟踪的一部分,我不确定我可以从这些错误中学到什么问题的根源。有什么建议么?

编辑:具体来说,即使我在几个 GB 文件夹上工作,也会发生以下异常:

0 投票
1 回答
11286 浏览

linux - 在运行 hadoop 集群时在 Google Cloud Platform 上获取“sudo:未知用户:hadoop”和“sudo:无法初始化策略插件错误”

我正在尝试在 Google Cloud Platform 上部署 Google 在https://github.com/GoogleCloudPlatform/solutions-google-compute-engine-cluster-for-hadoop上提供的示例 Hadoop 应用程序。

我按照那里提供的所有设置说明一步一步地进行操作。我能够设置环境并成功启动集群。但我无法运行 MapReduce 部分。我在我的终端上执行这个命令:

我收到以下错误:

由于我已按照原样执行了所有步骤,因此我无法理解为什么会出现此问题?

'hadoop'用户实际上是不是在之前执行的脚本中创建的,还是用户权限有问题?还是问题出在其他地方?

请帮我解决这个错误..!! 我被困在这里,无法继续前进。

0 投票
1 回答
437 浏览

hadoop - 谷歌计算引擎上的 Hadoop

我正在尝试通过“启动点击部署软件”功能在 Google Compute Engine 中设置 hadoop 集群。我创建了 1 个主节点和 1 个从节点,并尝试使用主节点的 start-all.sh 脚本启动集群,我收到错误“权限被拒绝(公钥)”。

我已经在从节点和主节点中生成了公钥和私钥。

目前我用我的用户名登录主服务器,是否必须以“hadoop”用户身份登录主服务器。如果是这样,该用户 ID 的密码是什么。

请让我知道如何克服这个问题。

0 投票
1 回答
1463 浏览

hadoop - Spark 作业似乎不能很好地并行化

使用 Spark 1.1

我有一份工作如下:

  1. 读取给定根目录下的文件夹列表,并行化列表
  2. 对于每个文件夹,阅读它下面的文件 - 这些是 gzip 文件
  3. 对于每个文件,提取内容 - 这些是行,每行代表一个事件,字段用制表符 (TSV) 分隔
  4. 创建所有行的单个 RDD。
  5. 将 TSV 转换为 json。

(现在线条代表某种事件类型。有 4 种类型:会话、请求、推荐、用户事件)

  1. 仅过滤掉会话事件。根据某些用户 ID 字段仅对其中的 1:100 进行采样。将它们转换为一对,用一个代表一些输出结构的键(如:事件类型/日期/事件),然后将其写入 FS。
  2. 对请求和用户事件执行相同的操作

(对于推荐,不能根据用户 id 进行采样(因为那里不存在),但是我们知道基于相互请求 id 字段的请求和推荐之间存在 1:1 的关系。所以:)

  1. 创建不同请求 ID 的列表。将这个列表与基于请求id作为key的推荐列表加入,从而实现我们想要的过滤。然后将缩减后的列表输出到FS。

现在,这是我的问题。我用来做这些事情的代码适用于小规模。但是当我在相对较大的输入上运行时,我使用一个由 80 台机器组成的集群,每台机器有 8 个内核和 50GB 内存,我可以看到很多机器没有被使用,这意味着只有一个内核被占用(也只有 ~20%),在为作业配置的 40GB 内存中,内存只有 16GB。

我认为在某个地方我的转换没有很好地并行化,但我不确定在哪里以及为什么。这是我的大部分代码(我省略了一些我认为与问题无关的辅助功能)

最后,我用来启动 Spark 作业的命令是:

0 投票
1 回答
298 浏览

hadoop - 谷歌云点击部署hadoop

为什么即使您计划使用 hadoop 连接器进行云存储,google cloud click to deploy hadoop 工作流程也需要为本地永久磁盘选择大小?默认大小是 500 GB .. 我在想如果它确实需要一些磁盘,它的大小应该小得多。在谷歌云中使用带有 hadoop 的云存储连接器时,是否有推荐的永久磁盘大小?

“在 Google Cloud Platform 上部署 Apache Hadoop

Apache Hadoop 框架支持跨计算机集群对大型数据集进行分布式处理。

Hadoop 将部署在单个集群中。默认部署创建 1 个主虚拟机实例和 2 个工作虚拟机,每个虚拟机具有 4 个 vCPU、15 GB 内存和 500 GB 磁盘。创建一个临时部署协调器 VM 实例来管理集群设置。

Hadoop 集群使用 Cloud Storage 存储桶作为其默认文件系统,可通过 Google Cloud Storage 连接器访问。访问 Cloud Storage 浏览器以查找或创建可在 Hadoop 部署中使用的存储桶。

Google Compute Engine 上的 Apache Hadoop 点击部署 Apache Hadoop Apache Hadoop ZONE us-central1-a WORKER NODE COUNT

CLOUD STORAGE BUCKET 选择一个bucket HADOOP VERSION 1.2.1 MASTER NODE DISK TYPE Standard Persistent Disk MASTER NODE DISK SIZE (GB)

WORKER NODE DISK TYPE 标准持久磁盘 WORKER NODE DISK SIZE (GB) "

0 投票
1 回答
1737 浏览

google-app-engine - 使用 Flume 在 Google Cloud Storage 上写入 HDFS/GS 所需的最小设置是什么?

我想将数据从 flume-ng 写入 Google Cloud Storage。这有点复杂,因为我观察到一个非常奇怪的行为。让我解释:

介绍

我已经在谷歌云上启动了一个 hadoop 集群(单击),设置为使用存储桶。

当我在 master 上 ssh 并使用命令添加文件时hdfs,我可以立即在我的存储桶中看到它

但是当我尝试添加然后从我的计算机中读取时,它似乎使用了其他一些 HDFS。在这里我添加了一个名为 的文件jp.txt,它没有显示我以前的文件test.txt

这也是我在探索 HDFS 时看到的唯一文件http://ip.to.my.cluster:50070/explorer.html#/

当我使用 Web 控制台 ( https://console.developers.google.com/project/my-project-id/storage/my-bucket/ ) 列出存储桶中的文件时,我只能看到test.txt而不是jp.txt.

我读到Hadoop 无法连接到 Google Cloud Storage并且我相应地配置了我的 hadoop 客户端(相当困难的东西),现在我可以看到我的存储桶中的项目。但为此,我需要使用gs://URI

观察/中间结论

因此,在同一个集群中似乎有 2 个不同的存储引擎:“传统 HDFS”(以 开头hdfs://)和 Google 存储桶(以 开头gs://)。

用户和权限不同,具体取决于您列出文件的位置。

问题)

主要问题是:使用 flume 在 Google Cloud Storage 上写入 HDFS/GS 所需的最小设置是什么?

相关问题

  • 我是否需要在 Google Cloud 上启动 Hadoop 集群才能实现我的目标?
  • 是否可以直接写入 Google Cloud Storage Bucket ?如果是,我该如何配置水槽?(添加罐子,重新定义类路径......)
  • 同一个集群怎么会有2个存储引擎(经典HDFS/GS bucket)

我的水槽配置

a1.sinks.hdfs_sink.hdfs.path 行是否接受gs://路径?

在这种情况下需要什么设置(额外的罐子,类路径)?

谢谢

0 投票
1 回答
155 浏览

hadoop - 无法将 Hadoop 和 Java 包复制到 Google Cloud Storage

我正在尝试在 Google Compute Engine 上设置 Hadoop 集群,并且我一直在按照这些说明进行操作。在我运行之前,一切似乎都运行良好:

使用我创建的项目 ID 和存储桶名称。该脚本似乎无法访问某些内容并以 403 崩溃;这是带有错误消息的输出的结尾: