本地上传文件到hdfs

本地上传文件到hdfs

  1. 使用javaApi上传文件

本地上传文件到hdfs
使用javaApi上传文件

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class PutHdfsFile {
    public static void main(String[] args) throws Exception {

        Configuration conf = new Configuration();
        //本地文件
        String localDir = "D:/11.txt";
        //hdfs目标目录
        String hdfsDir = "hdfs://cluster/test";
        try {
            Path localPath = new Path(localDir);
            Path hdfsPath = new Path(hdfsDir);
            FileSystem hdfs = FileSystem.get(conf);
            if (!hdfs.exists(hdfsPath)) {
                hdfs.mkdirs(hdfsPath);
                System.out.println("hdfs目录创建");
            }
            System.out.println("本地文件开始上传....");
            long start = System.currentTimeMillis();
            hdfs.copyFromLocalFile(localPath, hdfsPath);
            System.out.println("本地文件已上传成功,耗时:" + (System.currentTimeMillis() - start));

        } catch (Exception e) {
            e.printStackTrace();
            System.out.println(e.getMessage());
        }
    }


}


1.将core-site.xml,hdfs-site.xml放到resources目录下

2.更改本地文件目录即可上传。

使用远程工具上传文件到hdfs

https://blog.csdn.net/thethefighter/article/details/106864009

### 可能的原因分析 在将本地文件上传HDFS 后,如果发现 HDFS 中未显示该文件,可能由以下几个原因引起: 1. **路径错误** 如果指定的目标路径不存在或者路径拼写有误,则可能导致文件未能成功上传。这种情况下,通常不会报错,而是静默失败[^2]。 2. **权限不足** 用户账户缺乏对目标目录的操作权限也可能导致文件无法正常上传HDFS 的访问控制严格依赖于用户的权限设置,若当前用户无权向目标目录写入数据,则操作会被拒绝[^3]。 3. **Namenode 配置问题** Namenode 是 HDFS 的核心组件之一,负责管理元数据。如果客户端使用的 Namenode URL 或端口配置不正确,可能会导致连接不上集群,从而使得文件上传失败[^2]。 4. **网络异常** 当存在网络分区或其他通信障碍时,即使命令执行看似成功,实际的数据传输并未完成。这种情况尤其容易发生在分布式环境中[^2]。 5. **编码问题引发的隐性错误** 对于某些特殊类型的文件(尤其是包含非 ASCII 字符的内容),如果没有妥善处理字符集转换,就可能出现乱码现象甚至阻止整个过程顺利完成。例如,在 Ubuntu 平台上尝试直接迁移 ISO-8859 编码格式的文档至 UTF-8 系统下存储时便遇到了类似的挑战[^3]。 --- ### 解决方案 针对以上提到的各种可能性,以下是具体的排查与修复措施: #### 1. 核实并修正路径 确保所提供的绝对/相对地址完全匹配预期位置;可以通过 `hdfs dfs -ls /` 命令查看根目录下的子项列表确认是否存在相应父级结构。必要时创建缺失层次:` hdfs dfs -mkdir -p /your/target/path` #### 2. 调整适当的安全策略 检查是否有足够的权利去修改特定区域内的资源状态——即读取源材料以及撰写新条目两项均需满足最低需求标准之上。利用如下指令获取现有设定详情:`hdfs dfs -getfacl /path/to/check`; 若有必要调整则应用对应语法授予额外许可:“chmod”, “chown” #### 3. 审核 namenodes 参数定义准确性 重新审视应用程序内部关于 hadoop core-site.xml 文件里边有关 fs.defaultFS 属性值是否指向正确的主机名加端口号组合形式(hdfs://namenode-host:port/) 。另外还要留意 replication factor 默认值是不是合理范围之内以免影响性能表现. #### 4. 排除潜在物理链路干扰因素 联系 IT 运维团队协助检测服务器间连通状况排除任何已知瓶颈所在之处;同时考虑启用内置平衡器工具(hadoop balancer) 来优化负载分布情况缓解因局部过载造成的服务中断风险. #### 5. 处理好文本编码差异带来的麻烦 对于那些涉及多种语言混合表达方式的重要资料来说特别重要的是要提前做好充分准备预防此类事件再次发生。建议先通过专门软件将其统一转化为普遍接受的标准模式后再实施转移动作减少不必要的麻烦环节出现几率. ```bash iconv -f GBK -t UTF-8 inputfile.txt > outputfile_utf8.txt ``` 之后再按照常规流程把预处理后的版本送达到远程仓库当中保存起来待后续调用即可。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值