我想将文件从HDFS传输到不在hadoop集群但在网络中的不同服务器的本地文件系统.
我本可以做到的:
hadoop fs -copyToLocal <src> <dest>
and then scp/ftp <toMyFileServer>.
Run Code Online (Sandbox Code Playgroud)
由于数据量巨大且由于hadoop网关机器的本地文件系统空间有限,我想避免这种情况并将数据直接发送到我的文件服务器.
请帮助解决有关如何处理此问题的一些指示.
我试图在我的macbook上配置hadoop 0.23.8并运行以下异常
org.apache.hadoop.hdfs.server.protocol.DisallowedDatanodeException: Datanode denied communication with namenode: 192.168.1.13:50010
at org.apache.hadoop.hdfs.server.blockmanagement.DatanodeManager.registerDatanode(DatanodeManager.java:549)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.registerDatanode(FSNamesystem.java:2548)
at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.registerDatanode(NameNodeRpcServer.java:784)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.ipc.WritableRpcEngine$Server.call(WritableRpcEngine.java:394)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1571)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1567)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1262)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1565)
Run Code Online (Sandbox Code Playgroud)
我的core-site.xml看起来像这样
<configuration>
<property>
<name>dfs.federation.nameservices</name>
<value>ns1</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns1</name>
<value>192.168.1.13:54310</value>
</property>
<property>
<name>dfs.namenode.http-address.ns1</name>
<value>192.168.1.13:50070</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address.ns1</name>
<value>192.168.1.13:50090</value>
</property>
</configuration>
Run Code Online (Sandbox Code Playgroud)
关于我可能做错的任何想法?
有人可以解释这个计算并给出清晰的解释吗?
快速计算表明,如果寻道时间约为10 ms且传输速率为100 MB/s,为了使寻道时间为传输时间的1%,我们需要使块大小约为100 MB.默认值实际为64 MB,但许多HDFS安装使用128 MB块.随着新一代磁盘驱动器的传输速度的增长,这个数字将继续向上修正.
我在hdfs的文件夹中有一堆.gz文件.我想将所有这些.gz文件解压缩到hdfs中的新文件夹.我该怎么办?
当我上传文件到HDFS,如果我的复制因子设置为1,然后将文件分割会驻留在一台机器上或拆分将被分发到整个网络的多台机器?
hadoop fs -D dfs.replication=1 -copyFromLocal file.txt /user/ablimit
Run Code Online (Sandbox Code Playgroud) 我知道HDFS使用数据节点中的常规linux文件系统存储数据.我的HDFS块大小是128 MB.假设10 GB我的hadoop集群中有磁盘空间,这意味着HDFS最初具有80 blocks可用存储空间.
如果我创建一个小文件说12.8 MB,#available HDFS块将变为79.如果我创建另一个小文件12.8 MB会怎么样?#availbale区块会保持在79还是会降到78?在前一种情况下,HDFS基本上根据可用的可用磁盘空间重新计算每个块分配后的#available块,因此,只有在消耗了超过128 MB的磁盘空间后,#available块才会变为78.请澄清.
我2 GB在我的数据中有数据HDFS.
是否可以随机获取数据.就像我们在Unix命令行中所做的那样
cat iris2.csv |head -n 50
Run Code Online (Sandbox Code Playgroud) 我在我正在玩的VM机器上使用Cloudera.不幸的是我在将数据复制到HDFS时遇到问题,我得到以下信息:
[cloudera@localhost ~]$ hadoop fs -mkdir input
mkdir: Permission denied: user=cloudera, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x
Run Code Online (Sandbox Code Playgroud)
我不太关心这个VM的安全性,无论如何我可以在HDFS上打开更多的安全性吗?
Hadoop中分割大小和块大小之间的关系是什么?正如我在阅读此,分割大小必须是块大小的n倍(n是一个整数且n> 0),这是正确的吗?分割大小和块大小之间有关系吗?
我们都知道Spark会在内存中进行计算.我只是好奇以下.
如果我RDD从HDFS在我的pySpark shell中创建10 ,它是否意味着所有这些10 RDD秒数据将驻留在Spark Workers Memory上?
如果我不删除RDD,它会永远存在于内存中吗?
如果我的数据集(文件)大小超过可用的RAM大小,那么数据将存储在何处?
hdfs ×10
hadoop ×9
mapreduce ×2
apache-spark ×1
cloudera ×1
filesize ×1
gzip ×1
microsoft-distributed-file-system ×1
pyspark ×1
rdd ×1