Tag: hdfs

JSch:存储在hdfs上的私钥的addIdentity

我需要从hadoop集群连接到sftp服务器。 我想知道是否有办法从存储在hdfs中的私钥加载身份。 实际上似乎JSch对象只接受本地路径: try { String privateKeyPath = “hdfs://namenode:8020/path/to/privatekey”; // need this one to be an hdfs path JSch jsch = new JSch(); jsch.addIdentity(privateKeyPath); // [..] } catch (Exception ex) { // [..] } 任何想法?

Hadoop的FileSystem列出API调用中的通配符

tl;dr:为了能够在列出的路径中使用通配符(globs),只需使用globStatus(…)而不是listStatus(…) 。 上下文 我的HDFS集群上的文件按分区进行组织,日期为“根”分区。 文件结构的简化示例如下所示: /schemas_folder ├── date=20140101 │ ├── A-schema.avsc │ ├── B-schema.avsc ├── date=20140102 │ ├── A-schema.avsc │ ├── B-schema.avsc │ ├── C-schema.avsc └── date=20140103 ├── B-schema.avsc └── C-schema.avsc 就我而言,该目录在不同日期存储不同类型数据(本例中为A,B和C)的 Avro模式。 随着时间的推移,模​​式可能会开始存在,发展并停止存在。 目标 我需要能够尽快获得给定类型的所有模式。 在我希望得到类型A存在的所有模式的示例中,我想执行以下操作: hdfs dfs -ls /schemas_folder/date=*/A-schema.avsc 那会给我 Found 1 items -rw-r–r– 3 user group 1234 2014-01-01 12:34 /schemas_folder/date=20140101/A-schema.avsc Found 1 […]

使用Java访问HDFS中的文件

我试图使用Java API访问HDFS中的文件,但每次我都找不到文件。 我用来访问的代码是: – Configuration conf = new Configuration(); conf.addResource(FileUtilConstants.ENV_HADOOP_HOME + FileUtilConstants.REL_PATH_CORE_SITE); conf.addResource(FileUtilConstants.ENV_HADOOP_HOME + FileUtilConstants.REL_PATH_HDFS_SITE); try { FileSystem fs = FileSystem.get(conf); Path hdfsfilePath = new Path(hdfsPath); logger.info(“Filesystem URI : ” + fs.getUri()); logger.info(“Filesystem Home Directory : ” + fs.getHomeDirectory()); logger.info(“Filesystem Working Directory : ” + fs.getWorkingDirectory()); logger.info(“HDFS File Path : ” + hdfsfilePath); if (!fs.exists(hdfsfilePath)) […]

使用Hadoop处理大量小文件

我正在使用Hadoop示例程序WordCount来处理大量的小文件/网页(cca.2-3 kB)。 由于这远离hadoop文件的最佳文件大小,因此程序非常慢。 我想这是因为设置和撕毁工作的成本远远高于工作本身。 这些小文件也会导致文件名的命名空间耗尽。 我读到在这种情况下我应该使用HDFS存档(HAR),但我不确定如何修改此程序WordCount以从此存档中读取。 程序可以继续工作而无需修改或需要进行一些修改吗? 即使我在档案中打包了很多文件,问题仍然存在,这是否会提高性能。 我读到即使我打包多个文件,一个存档中的这些文件也不会由一个映射器处理,但很多,在我的情况下(我猜)不会提高性能。 如果这个问题太简单,请理解我是Hadoop的新手并且对它的经验很少。

如何在Hadoop MapReduce中将Object设置为Map输出的值?

在Hadoop MapReduce中,对于中间输出(由map()生成),我希望中间输出的值是以下对象。 MyObject{ date:Date balance:Double } 我该怎么做 我应该创建自己的可写类吗? 我是MapReduce的新手。 谢谢。

使用hadoop和java命令执行map-reduce作业之间有什么区别

找到许多运行map-reduce程序的选项。 任何人都可以解释以下命令之间的差异。 如果有的话,会对Map减少工作产生什么影响。 java -jar MyMapReduce.jar [args] hadoop jar MyMapReduce.jar [args] yarn jar MyMapReduce.jar [args] 在这些命令中哪一个最好还是其他? 可以使用下面的命令使用Web服务8088(YARN)的端口在Web服务正常上使用Yarn和Job History(如显示Hadoop和yarn命令)显示有关作业的所有信息的配置吗? java -jar MyMapReduce.jar [args]

“hadoop namenode -format”返回java.net.UnknownHostException

我正在学习hadoop,我正在尝试设置http://hadoop.apache.org/common/docs/current/single_node_setup.html中定义的单节点测试 我已经配置了ssh(我可以在没有密码的情况下登录)。 我的服务器在我们的内部网上,在代理后面。 当我想跑的时候 bin / hadoop namenode -format 我得到以下java.net.UnknownHostExceptionexception: $ bin/hadoop namenode -format 11/06/10 15:36:47 INFO namenode.NameNode: STARTUP_MSG: /************************************************************ STARTUP_MSG: Starting NameNode STARTUP_MSG: host = java.net.UnknownHostException: srv-clc-04.univ-nantes.prive3: srv-clc-04.univ-nantes.prive3 STARTUP_MSG: args = [-format] STARTUP_MSG: version = 0.20.203.0 STARTUP_MSG: build = http://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.20-security-203 -r 1099333; compiled by ‘oom’ on Wed May 4 07:57:50 PDT 2011 ************************************************************/ Re-format […]

hadoop方法将输出发送到多个目录

我的MapReduce作业按日期处理数据,需要将输出写入某个文件夹结构。 目前的期望是产生以下结构: 2013 01 02 .. 2012 01 02 .. 等等 在任何时候,我只获得长达12个月的数据,因此,我使用MultipleOutputs类在驱动程序中使用以下函数创建12个输出: public void createOutputs(){ Calendar c = Calendar.getInstance(); String monthStr, pathStr; // Create multiple outputs for last 12 months // TODO make 12 configurable for(int i = 0; i 10 ? “” + month : “0” + month ; // Generate path string in […]

用Java读取HDFS和本地文件

我想读取文件路径,无论它们是HDFS还是本地路径。 目前,我传递带有前缀file://的本地路径和带有前缀hdfs://的HDFS路径,并编写一些代码如下 Configuration configuration = new Configuration(); FileSystem fileSystem = null; if (filePath.startsWith(“hdfs://”)) { fileSystem = FileSystem.get(configuration); } else if (filePath.startsWith(“file://”)) { fileSystem = FileSystem.getLocal(configuration).getRawFileSystem(); } 从这里我使用FileSystem的API来读取文件。 如果还有其他比这更好的方法,你能告诉我吗?

将Log4j输出写入HDFS

有没有人试图将log4j日志文件直接写入 Hadoop分布式文件系统 ? 如果是,请回复如何实现这一目标。 我想我必须为它创建一个Appender。 这是这样的吗? 我的必要性是以特定的间隔将日志写入文件,并在稍后阶段查询该数据。