20230604_Hadoop命令操作示例
-
再HDFS中创建文件夹:/itcast/it heima,如存在请删除(跳过回收站)。
hdfs dfs -mkdir -p /itcast/itheima
-
上传/etc/hosts文件到hdfs的/itcast/itheima内。
hadoop fs -put /etc/hosts /itcast/itheima
-
查看HDFS中刚刚上传的文件内容。
hdfs dfs -ls /itcast/itheima hdfs dfs -cat /itcast/itheima/hosts
-
向HDFS中上传的文件追加:itheima到最后一行。
hdfs dfs -appendToFile abc.txt /itcast/itheima/hosts
-
下载hdfs中上传的文件到本地任意目录。
hadoop fs -get /itcast/itheima/hosts /data/
-
再hdfs中创建文件夹:/itcast/bigdata,将/itcast/itheima/hosts文件复制到/itcast/bigdata内。
hdfs dfs -mkdir -p /itcast/bigdata/ hdfs dfs -cp /itcast/itheima/hosts /itcast/bigdata/
-
将/itcast/itheima/hosts文件重命名为/itcast/itheima/myhost.
hdfs dfs -ls /itcast/itheima/rename
-
删除/itcast文件夹。
hdfs dfs rm -r /itcast # 跳过回收站 hdfs dfs -rm -r -skipTrash /itcast/itheima/rename
番外:练习的时候遇见一个问题以及解决过程中的记录
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:8020</value>
</property>
"""
key:fs.defaultFS
含义:HDFS文件系统的网络通讯路径
值:hdfs://node1:8020
- 协议为hdfs://
- namenode为node1
- namenode通讯端口为8020
"""
# 注意:defultFS一定不要写成defultfs,大小写会影响系统读取文件内容。
解决思路:查看 vim /export/server/hadoop/logs/ hadoop-hadoop-datanode-node3.log
以下是一些错误的报警已经解决思路,感谢chatgpt:
WARN org.apache.hadoop.security.authentication.server.AuthenticationFilter: Unable to initialize FileSignerSecretProvider, falling back to use random secrets. Reason: Could not read signature secret file: /home/hadoop/hadoop-http-auth-signature-secret
'''
这个错误意味着Hadoop无法读取签名密钥文件,因此无法初始化FileSignerSecretProvider。出现这个错误的原因可能是文件不存在、权限不足或格式不正确。
解决此问题的步骤如下:
检查文件路径是否正确,确保文件存在于指定路径中
检查文件权限,确保Hadoop用户对该文件具有读取权限
检查文件格式,确保文件包含正确格式的秘密内容
如果您已经尝试了上述步骤,但仍无法解决该问题,则可以考虑执行“hadoop fs -put”命令将签名密钥文件上传到Hadoop文件系统中,并在hadoop-site.xml文件中指定密钥文件的路径。此外,您还可以考虑使用随机密钥代替签名密钥,以避免此错误。
'''
WARN org.apache.hadoop.hdfs.server.datanode.web.DatanodeHttpServer: Got null for restCsrfPreventionFilter - will not do any filtering.
'''
这个警告信息意味着HDFS数据节点的Web UI没有启用CSRF防护过滤器。CSRF防护过滤器用于保护Web应用程序免受跨站请求攻击,如果没有启用,则可能存在安全风险。
要解决此问题,您可以在hdfs-site.xml中启用restCsrfPreventionFilter,如下所示:
<property>
<name>dfs.datanode.http.filter.initializers</name>
<value>org.apache.hadoop.hdfs.server.datanode.web.RestCsrfPreventionFilterInitializer</value>
</property>
如果您已经在hdfs-site.xml中启用了restCsrfPreventionFilter,但仍然收到这个警告信息,则可能是由于环境问题或版本问题导致的。您可以尝试更新Hadoop版本或检查操作系统环境是否正常。
'''
WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Unable to get NameNode addresses.
'''
这个警告信息意味着HDFS数据节点无法获取NameNode的地址。这可能是由于网络或配置问题导致的。
要解决此问题,您可以执行以下步骤:
检查网络连接:确保HDFS数据节点和NameNode之间的网络连接正常。您可以使用ping命令测试网络是否正常。
检查配置文件:检查hdfs-site.xml文件中是否指定了正确的NameNode地址。您可以尝试手动指定NameNode地址,然后重新启动HDFS数据节点。
检查NameNode状态:确保NameNode正在运行,您可以使用jps命令检查NameNode的状态。
如果您已经执行了上述步骤,但仍然无法解决该问题,则可能需要进一步检查Hadoop集群的配置和网络设置。
'''
WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Unable to get NameNode addresses. java.io.IOException: Incorrect configuration: namenode address dfs.namenode.servicerpc-address.[] or dfs.namenode.rpc-address.[] is not configured.
'''
这个警告信息意味着HDFS数据节点无法获取NameNode的地址,因为在hdfs-site.xml配置文件中没有正确配置dfs.namenode.servicerpc-address和dfs.namenode.rpc-address属性。
要解决此问题,您可以在hdfs-site.xml中指定正确的NameNode地址。请确保以下属性已在hdfs-site.xml中正确配置:
<property>
<name>dfs.namenode.servicerpc-address</name>
<value>namenode_hostname:8022</value>
<description>The address of the NameNode's service RPC server</description>
</property>
<property>
<name>dfs.namenode.rpc-address</name>
<value>namenode_hostname:8020</value>
<description>The address of the NameNode's RPC server</description>
</property>
在上面的示例中,“namenode_hostname”应替换为您的NameNode主机名或IP地址。
如果您已经在hdfs-site.xml中指定了正确的dfs.namenode.servicerpc-address和dfs.namenode.rpc-address属性,但仍然收到这个警告信息,则可能是由于其他配置问题或网络问题导致的,您可以检查配置文件并确保网络连接正常。
'''
ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: Exception in secureMain
'''
这个错误信息意味着HDFS数据节点无法在安全模式下启动。这可能是由于许多问题导致的,如缺少关键库文件、文件权限不正确或配置问题。
要解决此问题,您可以执行以下步骤:
检查关键库文件:请确保Hadoop集群中的关键库文件(如ssl-server.xml、ssl-client.xml和ssl-server.xml的密钥库和信任库)已正确配置。
检查文件权限:请确保所有Hadoop集群中的文件权限正确。您可以使用chmod命令更改文件权限,以确保所有的文件对Hadoop用户和组可读可写。
检查配置问题:请确保所有Hadoop配置文件(如core-site.xml、hdfs-site.xml和yarn-site.xml)已正确配置,并且所有关键属性已设置为正确的值。您可以手动检查配置文件,或者使用Ambari、Cloudera Manager等集群管理工具来检查配置是否正常。
检查日志:如果上述步骤都没有解决该问题,则可以检查Hadoop日志文件,以查找更详细的错误信息。有时,您可以通过检查日志文件来确定问题所在。
如果您已经执行了上述步骤,但仍然无法解决该问题,则可能需要进一步检查Hadoop集群的配置和环境设置。
'''