问题标签 [hdfs]
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.
lucene - 打开存储在 hdfs 中的 lucene 索引
如何读取存储在 HDFS 上的 lucene 索引目录,即如何为存储在 HDFS 上的索引获取 IndexReader。IndexReader 将在地图任务中打开。
类似于:IndexReader reader = IndexReader.open("hdfs/path/to/index/directory");
谢谢,阿基尔
amazon-ec2 - Hadoop 安全模式恢复 - 花费大量时间
我们在 Amazon EC2 上运行我们的集群。我们正在使用 cloudera 脚本来设置 hadoop。在主节点上,我们从以下服务开始。
在从机上,我们运行以下服务。
我们面临的主要问题是,hdfs 安全模式恢复需要一个多小时,这导致我们的工作完成延迟。
以下是主要的日志消息。
第一条消息会在任务跟踪器日志中抛出,因为作业跟踪器未启动。由于 hdfs 安全模式恢复,作业跟踪器未启动。
在恢复过程中抛出第二条消息。
有什么我做错了吗?正常的hdfs安全模式恢复需要多长时间?在启动作业跟踪器之前不启动任务跟踪器会不会有任何加速?亚马逊集群上是否有任何已知的 hadoop 问题?
谢谢你的帮助。
hadoop - Hadoop 如何执行输入拆分?
这是一个涉及 Hadoop/HDFS 的概念性问题。假设您有一个包含 10 亿行的文件。为了简单起见,让我们考虑每一行的形式<k,v>
,其中 k 是行距开头的偏移量, value 是行的内容。
现在,当我们说要运行 N 个映射任务时,框架是否将输入文件拆分为 N 个拆分并在该拆分上运行每个映射任务?或者我们是否必须编写一个分区函数来进行 N 次拆分并在生成的拆分上运行每个映射任务?
我想知道的是,拆分是在内部完成还是我们必须手动拆分数据?
更具体地说,每次调用 map() 函数时,它的Key key and Value val
参数是什么?
谢谢,迪帕克
java - 通用文件系统的 FileInputStream
我有一个包含 java 序列化对象的文件,例如“Vector”。我已将此文件存储在 Hadoop 分布式文件系统 (HDFS) 上。现在我打算在其中一个地图任务中读取这个文件(使用方法 readObject)。我想
由于文件存储在 HDFS 上,因此无法正常工作。所以我想到了使用 org.apache.hadoop.fs.FileSystem 类。但不幸的是,它没有任何返回 FileInputStream 的方法。它所拥有的只是一个返回 FSDataInputStream 的方法,但我想要一个输入流,它可以从文件中读取序列化的 java 对象,如矢量,而不仅仅是 FSDataInputStream 会执行的原始数据类型。
请帮忙!
amazon-s3 - 使用 Amazon EC2/S3 将本地数据复制到 Hadoop 集群上的 HDFS 时出现问题
我在 Amazon EC2 上设置了一个包含 5 个节点的 Hadoop 集群。现在,当我登录到主节点并提交以下命令时
它会引发以下错误(不是同时。)当我不将斜杠替换为“%2F”时会引发第一个错误,而当我将斜杠替换为“%2F”时会引发第二个错误:
笔记:
1)当我提交 jps 以查看 Master 上正在运行哪些任务时,它只是显示
离开 DataNode 和 TaskTracker。
2)我的密钥包含两个“/”(正斜杠)。我将它们替换为 S3 URI 中的“%2F”。
PS:该程序在单节点上运行时在 EC2 上运行良好。只有在我启动集群时,我才会遇到与将数据从 S3 复制到 HDFS 或从 HDFS 复制到 HDFS 相关的问题。而且, distcp 是做什么的?即使在我将数据从 S3 复制到 HDFS 之后,我是否还需要分发数据?(我想,HDFS 会在内部处理这个问题)
如果您可以将我引导到一个链接,该链接解释了使用 Amazon EC2/S3 在 hadoop 集群上运行 Map/reduce 程序。那太好了。
问候,
迪帕克。
ruby - 构建分布式日志聚合器(如 Splunk)的最佳组件堆栈是什么?
我正在尝试找到可以用来构建类似于 Splunk 的最佳组件,以便从计算网格中的大量服务器聚合日志。它也应该分发,因为我每天都有大量的日志,没有一台机器能够存储日志。
我对可以与 Ruby 一起使用并且可以在 Windows 和最新的 Solaris 上工作的东西特别感兴趣(是的,我有一个动物园)。
我将架构视为:
- 日志爬虫(Ruby 脚本)。
- 分布式日志存储。
- 分布式搜索引擎。
- 轻量级前端。
日志爬虫和分布式搜索引擎没有问题 - 日志将由 Ruby 脚本解析,ElasticSearch 将用于索引日志消息。前端也很容易选择——Sinatra。
我的主要问题是分布式日志存储。我查看了 MongoDB、CouchDB、HDFS、Cassandra 和 HBase。
- MongoDB 被拒绝,因为它不能在 Solaris 上运行。
- CouchDB 不支持分片(需要 smartproxy 才能使其工作,但这是我什至不想尝试的东西)。
- Cassandra 工作得很好,但它只是占用磁盘空间,并且需要每天运行自动平衡以在 Cassandra 节点之间分散负载。
- HDFS 看起来很有希望,但 FileSystem API 只是 Java,而 JRuby 很痛苦。
- HBase 看起来是一个最好的解决方案,但部署它和监控只是一场灾难——为了启动 HBase,我需要先启动 HDFS,检查它是否启动没有问题,然后启动 HBase 并检查它,然后启动 REST 服务和也检查一下。
所以我被困住了。有人告诉我 HDFS 或 HBase 是用作日志存储的最佳选择,但 HDFS 只能与 Java 一起顺利运行,而 HBase 只是部署/监控的噩梦。
任何人都可以分享使用我上面描述的组件或完全不同的东西构建类似系统的想法或经验吗?
windows - 除了 Hadoop,是否有任何在 Windows 上运行的分布式文件系统?
我迫切希望找到任何支持 Windows 的 DFS。唯一这样的 DFS 是 Hadoop HDFS,但很难将其部署到其他大量 Windows 机器,因为它需要 Cygwin + SSH。
几乎所有的 DFS 系统都只能在 Linux 上运行,只有一个 (HDFS) 可以在 Windows 上运行。
如果有人能够将我指向其他具有 Windows 支持的 DFS,我将不胜感激。
从 DFS 我需要能够跨 DFS 节点负载平衡文件、压缩和多语言 API 以使用 DFS(我不需要挂载 DFS)。
ruby - 如何使用 Ruby 在 Hadoop HDFS 中写入和读取文件?
有没有办法使用 Ruby 处理 HDFS Api?据我所知,没有多语言文件 Api,唯一的方法是使用本机 Java Api。我尝试使用 JRuby,但这个解决方案不稳定而且不是很原生。我还查看了 HDFS Thrift Api,但它并不完整,并且还缺少许多功能(例如写入索引文件)。
除了使用 JRuby 或 Thrift Api 之外,还有没有办法使用 Ruby 来处理 HDFS?
api - 是否可以将 Avro 与 Hadoop 0.20 一起使用?
我对使用 Avro 从 Hadoop HDFS 保存和读取文件很感兴趣,我在 Hadoop 问题跟踪器中看到了一些关于实现对 Avro 的支持的 Jira,但没有示例如何在 Hadoop 中启用 Avro 支持。此外,我不完全确定当前的 0.20 是否支持 Avro,因为一些 Jira 已在 0.21 关闭。是否有可能获得最新的 0.21 并以某种方式结束打开 Avro 并使用它?
hadoop - 是否可以在没有 HDFS 的情况下在伪分布式操作中运行 Hadoop?
我正在探索在本地系统上运行 hadoop 应用程序的选项。
与许多应用程序一样,前几个版本应该能够在单个节点上运行,只要我们可以使用所有可用的 CPU 内核(是的,这与这个问题有关)。当前的限制是在我们的生产系统上我们有 Java 1.5,因此我们必须将 Hadoop 0.18.3 作为最新版本(参见这个问题)。所以很遗憾我们还不能使用这个新功能。
第一种选择是简单地以伪分布式模式运行 hadoop。本质上:创建一个完整的 hadoop 集群,其上的所有内容都在一个节点上运行。
这种形式的“缺点”是它还使用了成熟的 HDFS。这意味着为了处理输入数据,必须首先将其“上传”到本地存储的 DFS 上。因此,这需要输入和输出数据的额外传输时间,并使用额外的磁盘空间。当我们停留在单节点配置上时,我想避免这两种情况。
所以我在想:是否可以覆盖“fs.hdfs.impl”设置并将其从“org.apache.hadoop.dfs.DistributedFileSystem”更改为(例如)“org.apache.hadoop.fs.LocalFileSystem” ?
如果这可行,“本地”hadoop 集群(只能由一个节点组成)可以使用现有文件而无需任何额外的存储要求,并且它可以更快地启动,因为不需要上传文件。我希望仍然有一个工作和任务跟踪器,也许还有一个名称节点来控制整个事情。
有没有人试过这个?它可以工作还是这个想法离预期用途太远了?
或者有没有更好的方法来获得同样的效果:Pseudo-Distributed operation without HDFS?
感谢您的见解。
编辑2:
这是我使用 bajafresh4life 提供的答案为 hadoop 0.18.3 conf/hadoop-site.xml 创建的配置。