问题标签 [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 回答
254 浏览

python - Google 云平台上的 Hadoop 集群无法启动

我正在尝试使用以下资源在 Google Cloud Platform 中创建一个 Hadoop 集群:

设置 Hadoop 集群后,我尝试启动 Hadoop 并收到此错误:

我正在通过 SSH 访问实例并且我正在使用--noauth_local_webserver

0 投票
1 回答
215 浏览

google-bigquery - 输出模式中的数组导致异常

我正在使用 Google BigQuery-Hadoop 连接器关注这个 WordCount 示例:

https://developers.google.com/hadoop/writing-with-bigquery-connector#completecode

该示例可以正常工作。

为了在输出模式中测试数组,我通过将数组对象定义添加到输出模式中只更改了代码中的一行:

现在,当我运行 WordCount 示例时,它给出了以下异常:

com.google.cloud.hadoop.io.bigquery.BigQueryUtils.getSchemaFromString(BigQueryUtils.java:97) 的 com.google.gson.JsonArray.getAsString(JsonArray.java:133) 的 java.lang.IllegalStateException。 cloud.hadoop.io.bigquery.BigQueryOutputFormat.getRecordWriter(BigQueryOutputFormat.java:121) at org.apache.hadoop.mapred.ReduceTask$NewTrackingRecordWriter.(ReduceTask.java:568) at org.apache.hadoop.mapred.ReduceTask.runNewReducer (ReduceTask.java:637) 在 org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:418) 在 org.apache.hadoop.mapred.Child$4.run(Child.java:255) 在 java.security org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1190) 的 javax.security.auth.Subject.doAs(Subject.java:415) 的 .AccessController.doPrivileged(Native Method) org.apache。hadoop.mapred.Child.main(Child.java:249)

有谁知道问题是什么?

谢谢

0 投票
2 回答
8288 浏览

google-api - 将 50TB 数据从本地 Hadoop 集群迁移到 Google Cloud Storage

我正在尝试将 Hadoop 集群中的现有数据 (JSON) 迁移到 Google Cloud Storage。

我已经探索过 GSUtil,似乎将大数据集移动到 GCS 是推荐的选项。它似乎可以处理巨大的数据集。GSUtil 似乎只能将数据从本地机器移动到 GCS 或 S3<->GCS,但不能从本地 Hadoop 集群移动数据。

  1. 将数据从本地 Hadoop 集群移动到 GCS 的推荐方法是什么?

  2. 如果是 GSUtil,它可以直接将数据从本地 Hadoop 集群(HDFS)移动到 GCS 还是首先需要在运行 GSUtil 的机器上复制文件然后传输到 GCS?

  3. 使用 Google 客户端 (Java API) 库与 GSUtil 的优缺点是什么?

非常感谢,

0 投票
1 回答
1978 浏览

hadoop - 从 Hadoop 访问只读的 Google Storage 存储分区

我正在尝试使用bdutil脚本从部署在 Google Cloud 中的 Hadoop 集群访问 Google Storage 存储桶。如果存储桶访问是只读的,它将失败。

我在做什么:

  1. 部署一个集群

    /li>
  2. 在主上:

    /li>

查看GCS Java source code,似乎 Google Cloud Storage Connector for Hadoop 需要空的“目录”对象,如果存储桶可写,它可以自己创建;否则失败。设置fs.gs.implicit.dir.repair.enable=false导致“检索对象错误”错误。

是否可以以某种方式使用只读存储桶作为 MR 作业输入?

gsutil用于文件上传。是否可以在文件上传时强制创建这些空对象?

0 投票
1 回答
5190 浏览

google-api - 如何通过 hadoop 集群为 Google Compute Engine 启用 Snappy/Snappy Codec

我正在尝试针对我们位于 Google Cloud Storage 上的压缩数据在 Google Compute 引擎上运行 Hadoop Job。尝试通过 SequenceFileInputFormat 读取数据时,出现以下异常:

  1. 似乎 SnappyCodec 不可用。我应该如何在谷歌计算引擎上的 Hadoop 集群中包含/启用 Snappy?
  2. 在部署 Hadoop 集群时,我可以通过 bdutil 脚本部署 Snappy lib(如果必须的话)吗?
  3. 在 Google Compute 引擎上部署的 Hadoop 集群上部署第三方库/jar 的最佳方法是什么?

非常感谢

0 投票
3 回答
480 浏览

hadoop - 无法通过 SSH 连接到 VM,导致使用 bdutil 安装 Hadoop 出现问题

我已经在这个网站上解决了大多数关于这个问题的问题,但似乎没有任何帮助。基本上我要做的是通过 Google 提供的 bdutil 脚本在我的 VM 上实例化一个 Hadoop 实例,但是问题似乎与我无法 ssh 进入 VM 实例的事实有关。

我已经为此苦苦挣扎了几天,所以我非常感谢您的帮助。

以下是我遵循的步骤:

为了引导您完成这些步骤,我刚刚创建了一个新 VM

我可以毫无问题地通过开发人员的控制台进行 SSH

以下显示系统信息和操作系统:

uname –a Linux 群岛-vm1 2.6.32-431.20.3.el6.x86_64 #1 SMP Thu Jun 19 21:14:45 UTC 2014

tail /etc/redhat-release tail: inotify 无法使用,恢复轮询CentOS release 6.5 (Final)

VM 已设置为允许 http 和 https 连接

在我的 windows 机器(window 8.1 专业版)上,我删除了所有以前创建的 SSH 文件,以允许创建新文件我还删除了项目中所有以前创建的密钥(那里有很多垃圾,因为我一直在尝试几件事让它工作)

然后我使用 gcloud Auth Login 授权给新的虚拟机

这工作正常,我获得授权并登录

我可以使用 gcloud 计算实例列表查看实例

然后我尝试通过 SSH 连接到实例

它说它正在生成我的 SSH 密钥,并且在我的机器和 VM 实例上都生成了

但是它不能通过 SSH 连接到机器注意:我已经尝试过使用密码和不使用密码,在这种情况下我将其留空

我收到的错误是没有支持的身份验证方法可用

当我检查文件时,它们是在我的机器上以及元数据/ssh 密钥部分的项目中创建的

当我比较机器上的 .pub 文件和 vm 上的密钥时,这两个密钥是相同的,我还尝试将密钥添加到特定于 vm 实例的 SSH 密钥中,但没有成功

有趣的是,当我在我的机器上使用腻子时,我可以使用 C:\Users\cleveen.ssh\google_compute_engine.ppk 文件毫无问题地登录

所以最初我想,没问题,我只使用我的腻子,但是当我尝试运行 bdutil 脚本来实例化 Hadoop 时,它给了我错误,我没有通过 gcutil 登录并且不会运行脚本,所以我然后登录通过开发人员控制台,它仍然无法运行(同样的错误)

然后我进入 sshd_config 文件并允许密码登录,为我的帐户设置密码,然后 gcloud SSH,允许我通过密码登录没有问题。

但是,当我运行脚本时,它创建了 Hadoop 所需的所有实例和驱动器,但是脚本因 SSH 公钥错误而失败,我永远无法完成它。

不幸的是,当我删除了它们所在的实例时,我没有来自该脚本的日志文件;如果查看这些日志对您有帮助,我可以再次执行这些步骤。

然而,这一切似乎都与使用密钥文件的 SSH 进程不起作用有关

如果我可以提供任何其他信息,请告诉我再次感谢您的帮助

0 投票
0 回答
1717 浏览

google-cloud-storage - GCS Connector Class com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem not found

We are trying to run Hive queries on HDP 2.1 using GCS Connector, it was working fine until yesterday but since today morning our jobs are randomly started failing. When we restart them manually they just work fine. I suspect it's something to do with number of parallel Hive jobs running at a given point of time.

Below is the error message:

vertexId=vertex_1407434664593_37527_2_00, diagnostics=[Vertex Input: audience_history initializer failed., java.lang.ClassNotFoundException: Class com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem not found] DAG failed due to vertex failure. failedVertices:1 killedVertices:0 FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.tez.TezTask

Any help will be highly appreciated.

Thanks!

0 投票
3 回答
4094 浏览

google-app-engine - Hadoop 无法连接到 Google Cloud Storage

我正在尝试将在 Google Cloud VM 上运行的 Hadoop 连接到 Google Cloud Storage。我有:

  • 修改 core-site.xml 以包含 fs.gs.impl 和 fs.AbstractFileSystem.gs.impl 的属性
  • 在生成的 hadoop-env.sh 中下载并引用了 gcs-connector-latest-hadoop2.jar
  • 使用我的个人帐户(而不是服务帐户)通过 gcloud auth 登录进行身份验证。

我可以运行 gsutil -ls gs://mybucket/ 没有任何问题,但是当我执行时

hadoop fs -ls gs://mybucket/

我得到输出:

想知道我缺少哪些步骤才能让 Hadoop 能够看到 Google 存储?

谢谢!

0 投票
1 回答
532 浏览

google-compute-engine - 在 Google Cloud 中维护持久性 HDFS

我让我的学生使用bdutil永久磁盘和 HDFS 作为默认文件系统创建一个 Google Compute Engine 集群。我们希望拥有永久性磁盘,以便学生可以在几周内完成项目。但是,重新部署集群后,HDFS 似乎无法使用。

我的问题实际上是“如何跨集群重新部署维护持久的 HDFS 文件系统?”

这是我尝试过的

在创建永久磁盘的初始部署中一切正常。我用命令创建一个目录

然后我删除并重新部署集群,DELETE_ATTACHED_PDS_ON_DELETE=falseCREATE_ATTACHED_PDS_ON_DEPLOY=false在重新部署过程中保留永久性磁盘

当我 ssh 进入重新部署的集群时,我可以看到我创建的文件

但是,任何访问文件内容的尝试都会失败:

手动关闭安全代码无济于事

任何关于如何创建可以在重新部署集群时持续存在的 HDFS 存储的建议将不胜感激

谢谢,

麦克风

0 投票
1 回答
2053 浏览

hadoop - Hadoop 2.4.1 和适用于 Hadoop 的 Google Cloud Storage 连接器

我正在尝试使用 Google 的 Cloud Storage Connector for Hadoop 在 Hadoop 上运行 Oryx: https ://cloud.google.com/hadoop/google-cloud-storage-connector

我更喜欢将 Hadoop 2.4.1 与 Oryx 一起使用,因此我将 hadoop2_env.sh 设置用于我在 google 计算引擎上创建的 hadoop 集群,例如:

当我尝试使用 hadoop 运行 oryx 时,我面临两个主要问题。

1) 尽管确认我的 hadoop conf 目录与 google 在计算引擎上安装的预期匹配,例如:

我仍然发现某些东西正在寻找 /conf 目录,例如:

我的理解是../etc/hadoop应该是/conf目录,eg: hadoop:配置文件

虽然我不需要进行任何更改,但这个问题只有在我将配置文件复制到新创建的目录时才能解决,例如:

那么这是为什么呢?这是使用 google hadoop 连接器的结果吗?

2)在“解决”上述问题之后,我发现(在我看来)与 hadoop 集群和 google 文件系统之间的通信有关的其他错误:

2014 年 10 月 1 日星期三 20:18:30 UTC 警告无法为您的平台加载 native-hadoop 库...在适用的情况下使用内置 java 类

2014 年 10 月 1 日星期三 20:18:30 UTC 信息 命名空间前缀:hdfs://BUCKET_NAME

2014 年 10 月 1 日星期三 20:18:30 UTC 在 com.cloudera.oryx.common.servcomp.StoreUtils.listGenerationsForInstance(StoreUtils.java:50) 在 com.cloudera.oryx.computation 执行 java.lang.ExceptionInInitializerError 时出现严重意外错误。 PeriodicRunner.run(PeriodicRunner.java:173) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304) at java.util .concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java: 1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:745) 引起:java.lang.IllegalArgumentException: java.net.UnknownHostException: org.apache.hadoop.security.SecurityUtil.buildTokenService(SecurityUtil. java:373) 在 org.apache.hadoop.hdfs.NameNodeProxies.createNonHAProxy(NameNodeProxies.java:258) 在 org.apache.hadoop.hdfs.NameNodeProxies.createProxy(NameNodeProxies.java:153) 在 org.apache.hadoop.hdfs .DFSClient.(DFSClient.java:602) 在 org.apache.hadoop.hdfs.DFSClient.(DFSClient.java:547) 在 org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:139) 在 org. apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2591) 在 org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:89) 在 org.apache.hadoop.fs.FileSystem$Cache.getInternal (文件系统.java:2625) 在 org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2607) 在 org.apache.hadoop.fs.FileSystem.get(FileSystem.java:368) 在 com.cloudera.oryx.common .servcomp.Store.(Store.java:76) at com.cloudera.oryx.common.servcomp.Store.(Store.java:57) ... 还有 9 个

引起:java.net.UnknownHostException: BUCKET_NAME ... 22 更多

与我相关的是,当我将默认文件系统设置为 gs:// 时,命名空间前缀是 hdfs://

也许这会导致 UnkownHostException?

请注意,我已“确认”hadoop 集群已连接到 google 文件系统,例如:hadoop fs -ls 生成我的 google 云存储桶的内容以及 gs://BUCKET_NAME 目录的所有预期内容。但是,我不熟悉通过 hadoop 连接器对 hadoop 的 google 表现,以及我通常测试以查看 hadoop 集群是否正在运行的传统方式,即:jps 仅产生 6440 Jps,而不是列出所有节点。但是,我从 hadoop 集群的主节点(即 PREFIX_NAME-m)运行此命令,并且在使用 google 云存储连接器用于 hadoop 时,我不确定预期的输出。

那么,如何解决这些错误并让我的 oryx 作业(通过 hadoop)成功访问我的 gs://BUCKET_NAME 目录中的数据?

提前感谢您的见解或建议。

更新:感谢非常详细的回复。作为一种解决方法,我通过更改将 gs://“硬编码”到 oryx 中:

至:

我现在收到以下错误:

2014 年 10 月 14 日星期二 20:24:50 UTC 严重意外错误在 com.cloudera.oryx.common.servcomp.StoreUtils.listGenerationsForInstance(StoreUtils.java:50) 在 com.cloudera.oryx.computation 执行 java.lang.ExceptionInInitializerError。 PeriodicRunner.run(PeriodicRunner.java:173) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304) at java.util .concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java: 1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker。在 java.lang.Thread.run(Thread.java:745) 处运行(ThreadPoolExecutor.java:615)

引起:java.lang.RuntimeException:java.lang.ClassNotFoundException:类 com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem 在 org.apache.hadoop.conf.Configuration.getClass 找不到 (Configuration.java:1905)在 org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2573) 在 org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2586) 在 org.apache.hadoop.fs.FileSystem.access $200(FileSystem.java:89) at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2625) at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2607)在 org.apache.hadoop.fs.FileSystem.get(FileSystem.java:368) 在 com.cloudera.oryx.common.servcomp.Store.(Store.java:76) 在 com.cloudera.oryx.common.servcomp。商店。(商店。java:57)

根据此处的说明:https ://cloud.google.com/hadoop/google-cloud-storage-connector#classpath我相信我已将连接器 jar 添加到 Hadoop 的类路径中;我补充说:

到 /home/rich/hadoop-env-setup.sh。和 (echo $HADOOP_CLASSPATH) 产生:

/contrib/capacity-scheduler/.jar:/home/hadoop/hadoop-install/share/hadoop/common/lib/gcs-connector-1.2.9-hadoop2.jar:/contrib/capacity-scheduler/.jar:/ _ _主页/hadoop/hadoop-install/share/hadoop/common/lib/gcs-connector-1.2.9-hadoop2.jar

我需要在类路径中添加更多内容吗?

我还注意到(可能相关)即使使用导出命令,我仍然会收到 /etc/hadoop/conf 的错误。我一直在使用 sudo mkdir /etc/hadoop/conf 作为临时解决方法。我在这里提到这一点,以防它可能导致其他问题。