windows 系统下操作hdfs 以及shell编程规范

windows 系统下操作hdfs 以及shell编程规范

在这里插入图片描述
以上是 在node1主机上 有一个 1.txt文件 分成三块 备份副本数为2
Node1 : blk-1 ,blk-3
Node2 :blk-2,blk-1
Node3 :blk-3,blk-2
1.请求下载文件
2.确认是否具有操作文件的权限
3.Namenode 视情况分批返回该文件的元数据信息或者全部元数据信息。
4.在该批次中,客户端拉取数据是并行的,分别启动多线程提取指定的dn上拉取数据。
5.当客户端吧该文件的所有数据块block拉取下来之后,需要按照块的顺序进行拼接(merge)形成文件的最终样子。 【blk-1,blk-2,blk-3】
6.在拉取过程中 内部会使用crc进行校验。

Windom系统下  安装hadoop 并通过java代码操作hdfs (相当于windows 系统下 hdfs client)

1.首先配置全局JAVA_HOME ; PATH ;HADOOP_HOME;PATH (windows系统下安装hadoop时,给的有一个hadoop 包解压即可。已上传百度云)
2.查看hadoop是否安装成功 hadoop ;hadoop version
3.Hadoop version 不成功 ,一般是因为 到hadoop 安装目录下 etc/hadoop/hadoop-env.cmd 找到set JAVA_HOME=D:\PROGRA~1\Java\jdk1.8.0_141 即可。

代码:

创建 Maven 工程,引入 pom 依赖


org.apache.hadoop
hadoop-common
2.7.4


org.apache.hadoop
hadoop-hdfs
2.7.4


org.apache.hadoop
hadoop-client
2.7.4

配置maven仓库。配一下 (视频中没配)
创建包 cn.itcast
创建类 HdfsClient 主方法
直接使用 pom中 引入的 FIleSystem.get(new URI(“hdfs://note1:9000”),conf,”root”)

public class HDFSClient {
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
// conf.set(“fs.defaultFS”,“hdfs://note1:9000”);
FileSystem fs = FileSystem.get(new URI(“hdfs://note1:9000”), conf, “root”);
fs.mkdirs(new Path("/CreateByJava"));
fs.copyFromLocalFile(new Path(“d://1.txt”),new Path("/CreateByJava"));
fs.copyToLocalFile(false,new Path("/CreateByJava/1.txt"),new Path(“e:\”),false);
fs.close();
}
}

在上传可以成功,但下载是个空文件 ,而且报一下错误:
Exception in thread “main” ExitCodeException exitCode=-1073741515:
at org.apache.hadoop.util.Shell.runCommand(Shell.java:585)
at org.apache.hadoop.util.Shell.run(Shell.java:482)

红字错误:是因为缺失 api-ms-win-crt-string-l1-1-0.dll 丢失
然后在网上查找了:并下载 放置到了 c:\Windows\SysWOW64 下 并win+r 输入:regsvr32 c:\Windows\SysWOW64\api-ms-win-crt-string-l1-1-0.dll

shell规范化编程:

  • 定义跟本次shell运行相关的软件环境变量
  • 定义本次shell当中的一些常量变量 比如:路径 时间 类名 属性等等 便于后期集中维护
  • 本次shell的核心逻辑(要结合流程控制 做精准判断)
    举例:创建一个.sh 文件脚本 粘贴一下代码:

*#!/bin/bash
#set java env
export JAVA_HOME=/export/servers/jdk1.8.0_65
export JRE_HOME= J A V A H O M E / j r e e x p o r t C L A S S P A T H = . : {JAVA_HOME}/jre export CLASSPATH=.: JAVAHOME/jreexportCLASSPATH=.:{JAVA_HOME}/lib: J R E H O M E / l i b e x p o r t P A T H = {JRE_HOME}/lib export PATH= J

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值