我正在运行这个命令——
sudo -u hdfs hadoop fs -du -h /user | sort -nr
Run Code Online (Sandbox Code Playgroud)
并且输出未按 gigs、Terabytes、GB 排序
我发现这个命令 -
hdfs dfs -du -s /foo/bar/*tobedeleted | sort -r -k 1 -g | awk '{ suffix="KMGT"; for(i=0; $1>1024 && i < length(suffix); i++) $1/=1024; print int($1) substr(suffix, i, 1), $3; }'
Run Code Online (Sandbox Code Playgroud)
但似乎没有用。
有没有一种方法或命令行标志我可以用来让它排序并且输出应该看起来像--
123T /xyz
124T /xyd
126T /vat
127G /ayf
123G /atd
Run Code Online (Sandbox Code Playgroud)
请帮忙
问候马尤尔
我的工作常常挂在这样的信息上:
14/09/01 00:32:18 INFO spark.MapOutputTrackerMasterActor: Asked to send map output locations for shuffle 0 to spark@*:37619
Run Code Online (Sandbox Code Playgroud)
如果有人能够解释Spark在发出此消息时正在做什么,那将会很棒.这条消息是什么意思?用户可能做错了什么?应该调整哪些配置?
这很难调试,因为它不是OOM,它不会给ST,它只是坐着坐着坐着.
至少早在1.0.0这就是Spark的一个问题,并且仍在使用Spark 1.5.0
我正在尝试学习MapReduce,但我现在有点迷失了.
特别是这套说明:
Compile WordCount.java and create a jar:
$ bin/hadoop com.sun.tools.javac.Main WordCount.java
Run Code Online (Sandbox Code Playgroud)
当我hadoop在我的终端输入时,我能够看到提供参数的"帮助",所以我相信我已经安装了hadoop.
当我输入命令时:
编译WordCount.java并创建一个jar:
hadoop com.sun.tools.javac.Main WordCount.java
我收到错误:
Error: Could not find or load main class com.sun.tools.javac.Main
我知道我已经安装了Java并在我的计算机上工作,因为我之前使用它来创建其他程序.
该命令输出:
$ /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/jdk1.7.0_55.jdk/Contents/Home
Run Code Online (Sandbox Code Playgroud)
也许我错过了一套Java工具?不确定
我知道HDFS是一次写入并多次读取.
假设我想在HDFS中更新文件有没有办法做到这一点?
先感谢您 !
我有一个.txt文件如下:
这是xyz
这是我的家
这是我的电脑
这是我的房间
这是ubuntu PC xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxxxxxxxxxxxxxxxxxxxxx
(忽略每条记录后的空白行)
我已将块大小设置为64字节.我要检查的是,是否存在单个记录被分成两个块的情况.
现在逻辑上,因为块大小是64字节,在将文件上传到HDFS之后,它应该分别创建3块大小为64,64,27字节的块.此外,由于第一个块的大小为64字节,因此它应仅包含以下数据:
这是xyz
这是我的家
这是我的电脑
这是我的房间
钍
现在我想看看第一个块是否是这样,如果我通过浏览器浏览HDFS并下载文件,它会下载整个文件而不是单个块.
所以我决定运行一个map-reduce作业,它只显示记录值.(设置reducers=0和mapper输出为context.write(null,record_value),也改变默认分隔符"")
现在,在运行作业时,作业计数器显示3个拆分,这是显而易见的,但在检查输出目录完成后,它显示3个映射器输出文件,其中2个为空,第一个映射器输出文件具有所有内容文件原样.
谁能帮我这个?新版本的hadoop是否有可能自动处理不完整的记录?
我正在尝试使用Hadoop实现app =>从天气数据中找到最高温度(来自Tom White的书籍Hadoop:Definitive Guide(第3版)).我已经下载并安装了Hadoop 2.6.0我应该添加哪些依赖项才能使其正常工作?
我在datanodes的日志中看到了这一点.这可能是因为我将500万个文件复制到hdfs:
java.lang.IllegalStateException: com.google.protobuf.InvalidProtocolBufferException: Protocol message was too large. May be malicious. Use CodedInputStream.setSizeLimit() to increase the size limit.
at org.apache.hadoop.hdfs.protocol.BlockListAsLongs$BufferDecoder$1.next(BlockListAsLongs.java:332)
at org.apache.hadoop.hdfs.protocol.BlockListAsLongs$BufferDecoder$1.next(BlockListAsLongs.java:310)
at org.apache.hadoop.hdfs.protocol.BlockListAsLongs$BufferDecoder.getBlockListAsLongs(BlockListAsLongs.java:288)
at org.apache.hadoop.hdfs.protocolPB.DatanodeProtocolClientSideTranslatorPB.blockReport(DatanodeProtocolClientSideTranslatorPB.java:190)
at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.blockReport(BPServiceActor.java:507)
at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.offerService(BPServiceActor.java:738)
at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:874)
at java.lang.Thread.run(Thread.java:745)
Caused by: com.google.protobuf.InvalidProtocolBufferException: Protocol message was too large. May be malicious. Use CodedInputStream.setSizeLimit() to increase the size limit.
at com.google.protobuf.InvalidProtocolBufferException.sizeLimitExceeded(InvalidProtocolBufferException.java:110)
at com.google.protobuf.CodedInputStream.refillBuffer(CodedInputStream.java:755)
at com.google.protobuf.CodedInputStream.readRawByte(CodedInputStream.java:769)
at com.google.protobuf.CodedInputStream.readRawVarint64(CodedInputStream.java:462)
at com.google.protobuf.CodedInputStream.readSInt64(CodedInputStream.java:363)
at org.apache.hadoop.hdfs.protocol.BlockListAsLongs$BufferDecoder$1.next(BlockListAsLongs.java:326)
... 7 more
Run Code Online (Sandbox Code Playgroud)
我只是使用hadoop fs -put ....将文件复制到hdfs.最近我开始在客户端获取这些类型的消息:
15/06/30 15:00:58 INFO hdfs.DFSClient:无法完成/pdf-nxml/file1.nxml.COPYING retrying ... 15/06/30 15:01:05 …
阅读Apache Hadoop文档后,了解辅助节点和检查点节点的职责存在一些小问题
我很清楚Namenode的角色和职责:
- NameNode将对文件系统的修改存储为附加到本机文件系统文件的日志进行编辑.当NameNode启动时,它从图像文件fsimage读取HDFS状态,然后从编辑日志文件中应用编辑.然后它将新的HDFS状态写入fsimage并使用空的编辑文件开始正常操作.由于NameNode仅在启动期间合并fsimage和编辑文件,因此编辑日志文件可能会在繁忙的群集上随着时间的推移而变得非常大.较大的编辑文件的另一个副作用是下次重新启动NameNode需要更长的时间.
但是在理解辅助名称节点和检查点名称节点职责方面我有一点困惑.
Secondary NameNode:
- 辅助NameNode定期合并fsimage和编辑日志文件,并使编辑日志大小保持在限制范围内.它通常在与主NameNode不同的机器上运行,因为它的内存要求与主NameNode的顺序相同.
检查点节点:
- Checkpoint节点定期创建命名空间的检查点.它从活动的NameNode下载fsimage和编辑,在本地合并它们,并将新映像上传回活动的NameNode.Checkpoint节点通常在与NameNode不同的机器上运行,因为它的内存要求与NameNode的顺序相同.Checkpoint节点由配置文件中指定的节点上的bin/hdfs namenode -checkpoint启动.
似乎辅助namenode和Checkpoint节点之间的责任不明确.两者都在进行编辑.那么谁最终会修改?
另外,我在jira中创建了两个错误,以消除理解这些概念的模糊性.
issues.apache.org/jira/browse/HDFS-8913
issues.apache.org/jira/browse/HDFS-8914
Run Code Online (Sandbox Code Playgroud) 我在我的测试hadoop实例上运行了以下命令:
hadoop fs -du /test/data/
51179082 153537246 /test/data/9875/2016/02/03
46949272 140847816 /test/data/9875/2016/02/04
Run Code Online (Sandbox Code Playgroud)
我理解du给出了文件和目录的大小,但hadoop fs -du它有两种尺寸.有人可以帮我理解这些是什么吗?
我正在构建一个由 spring-boot 驱动的服务,该服务使用文件系统 API 将数据写入 Hadoop。一些数据写入 parquet 文件,大块缓存在内存中,因此当服务关闭时,可能有数百 Mb 的数据必须写入 Hadoop。
FileSystem默认情况下会自动关闭,因此当服务关闭时,有时会FileSystem在关闭所有写入器之前关闭,从而导致镶木地板文件损坏。
fs.automatic.close文件系统中有标志Configuration,但是FileSystem实例是从多个线程使用的,我不知道在FileSystem手动关闭之前等待它们全部完成的干净方法。我尝试使用专用的 filesysem 关闭 bean 实现 Spring SmartLifeCyclewith maxphase所以它最后被销毁,但实际上它不是最后被销毁而是最后通知关闭,而其他 bean 仍在关闭过程中。
理想情况下,每个需要 a 的对象FileSystem都会得到一个并负责关闭它。问题是FileSystem.get(conf)返回一个缓存的实例。有FileSystem.newInstance(conf),但不清楚在FileSystem性能方面使用多个实例的后果是什么。还有另外一个问题,与-有没有办法通过FileSystem实例来ParquetWriter-它得到一个使用path.getFileSystem(conf)。并且有人会认为该行只会返回FileSystem分配给该文件的实例,但这是错误的 - 很可能会返回相同的缓存实例,因此关闭它是错误的。
是否有推荐的方法来管理 a 的生命周期FileSystem?如果 aFileSystem使用fs.automatic.closeset to创建true并且从不手动关闭会发生什么?也许 spring-boot 支持FileSystem在所有其他 bean …
hadoop2 ×10
hadoop ×9
hdfs ×3
java ×2
mapreduce ×2
apache-spark ×1
bash ×1
hadoop-yarn ×1
maven ×1
pom.xml ×1
shell ×1
spring-boot ×1
unix ×1