银行网站建设方案网站可以给pdf做笔记
- 作者: 五速梦信息网
- 时间: 2026年04月20日 06:58
当前位置: 首页 > news >正文
银行网站建设方案,网站可以给pdf做笔记,文职人员招聘2023官网,数据库做网站和做软件有什么不一样3.1 HDFS客户端环境准备
1#xff0e;根据自己电脑的操作系统拷贝对应的编译后的hadoop jar包到非中文路径#xff08;例如#xff1a;D:\javaEnv\hadoop-2.77#xff09;#xff0c;如下图所示。 2#xff0e;配置HADOOP_HOME环境变量#xff0c;如下图所示。 3#…3.1 HDFS客户端环境准备
1根据自己电脑的操作系统拷贝对应的编译后的hadoop jar包到非中文路径例如D:\javaEnv\hadoop-2.77如下图所示。 2配置HADOOP_HOME环境变量如下图所示。 3配置Path环境变量如下图所示。 4创建一个Maven工程HdfsClientDemo
5导入相应的依赖坐标日志添加
dependenciesdependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversionRELEASE/version/dependencydependencygroupIdorg.apache.logging.log4j/groupIdartifactIdlog4j-core/artifactIdversion2.8.2/version/dependencydependencygroupIdorg.apache.hadoop/groupIdartifactIdhadoop-common/artifactIdversion2.7.7/version/dependencydependencygroupIdorg.apache.hadoop/groupIdartifactIdhadoop-client/artifactIdversion2.7.7/version/dependencydependencygroupIdorg.apache.hadoop/groupIdartifactIdhadoop-hdfs/artifactIdversion2.7.7/version/dependencydependencygroupIdjdk.tools/groupIdartifactIdjdk.tools/artifactIdversion1.8/versionscopesystem/scopesystemPath${JAVA_HOME}/lib/tools.jar/systemPath/dependency
/dependencies注意如果Eclipse/Idea打印不出日志在控制台上只显示
1.log4j:WARN No appenders could be found for logger (org.apache.hadoop.util.Shell).
2.log4j:WARN Please initialize the log4j system properly.
3.log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.需要在项目的src/main/resources目录下新建一个文件命名为“log4j.properties”在文件中填入
log4j.rootLoggerINFO, stdout
log4j.appender.stdoutorg.apache.log4j.ConsoleAppender
log4j.appender.stdout.layoutorg.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern%d %p [%c] - %m%n
log4j.appender.logfileorg.apache.log4j.FileAppender
log4j.appender.logfile.Filetarget/spring.log
log4j.appender.logfile.layoutorg.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern%d %p [%c] - %m%n6创建包名com.atguigu.hdfs
7创建HdfsClient类
public class HdfsClient{Testpublic void testMkdirs() throws IOException, InterruptedException, URISyntaxException {// 1 获取文件系统Configuration configuration new Configuration();// 配置在集群上运行// configuration.set(fs.defaultFS, hdfs://hdp101:9000);// FileSystem fs FileSystem.get(configuration);FileSystem fs FileSystem.get(new URI(hdfs://hdp101:9000), configuration, root);// 2 创建目录fs.mkdirs(new Path(/1108/daxian/banzhang));// 3 关闭资源fs.close();}
}8执行程序
运行时需要配置用户名称如图3-7所示
客户端去操作HDFS时是有一个用户身份的。默认情况下HDFS客户端API会从JVM中获取一个参数来作为自己的用户身份-DHADOOP_USER_NAMErootroot为用户名称。
3.2HDFS的API操作
3.2.1HDFS文件上传测试参数优先级
1编写源代码
Test
public void testCopyFromLocalFile() throws IOException, InterruptedException, URISyntaxException {// 1 获取文件系统Configuration configuration new Configuration();configuration.set(dfs.replication, 2);FileSystem fs FileSystem.get(new URI(hdfs://hdp101:9000), configuration, root);// 2 上传文件fs.copyFromLocalFile(new Path(e:/banzhang.txt), new Path(/banzhang.txt));// 3 关闭资源fs.close();System.out.println(over);
}2将hdfs-site.xml拷贝到项目的根目录下
?xml version1.0 encodingUTF-8?
?xml-stylesheet typetext/xsl hrefconfiguration.xsl?configurationpropertynamedfs.replication/namevalue1/value/property
/configuration3参数优先级
参数优先级排序1客户端代码中设置的值 2ClassPath下的用户自定义配置文件 3然后是服务器的默认配置
3.2.2HDFS文件下载
Test
public void testCopyToLocalFile() throws IOException, InterruptedException, URISyntaxException{// 1 获取文件系统Configuration configuration new Configuration();FileSystem fs FileSystem.get(new URI(hdfs://hdp101:9000), configuration, root);// 2 执行下载操作// boolean delSrc 指是否将原文件删除// Path src 指要下载的文件路径// Path dst 指将文件下载到的路径// boolean useRawLocalFileSystem 是否开启文件校验fs.copyToLocalFile(false, new Path(/banzhang.txt), new Path(e:/banhua.txt), true);// 3 关闭资源fs.close();
}3.2.3HDFS文件夹删除
Test
public void testDelete() throws IOException, InterruptedException, URISyntaxException{// 1 获取文件系统Configuration configuration new Configuration();FileSystem fs FileSystem.get(new URI(hdfs://hdp101:9000), configuration, root);// 2 执行删除fs.delete(new Path(/1108/), true);// 3 关闭资源fs.close();
}3.2.4 HDFS文件名更改
Test
public void testRename() throws IOException, InterruptedException, URISyntaxException{// 1 获取文件系统Configuration configuration new Configuration();FileSystem fs FileSystem.get(new URI(hdfs://hdp101:9000), configuration, root);// 2 修改文件名称fs.rename(new Path(/banzhang.txt), new Path(/banhua.txt));// 3 关闭资源fs.close();
}3.2.5HDFS文件详情查看
Test
public void testListFiles() throws IOException, InterruptedException, URISyntaxException{// 1获取文件系统Configuration configuration new Configuration();FileSystem fs FileSystem.get(new URI(hdfs://hdp101:9000), configuration, root);// 2 获取文件详情RemoteIteratorLocatedFileStatus listFiles fs.listFiles(new Path(/), true);while(listFiles.hasNext()){LocatedFileStatus status listFiles.next();// 输出详情// 文件名称System.out.println(status.getPath().getName());// 长度System.out.println(status.getLen());// 权限System.out.println(status.getPermission());// 分组System.out.println(status.getGroup());// 获取存储的块信息BlockLocation[] blockLocations status.getBlockLocations();for (BlockLocation blockLocation : blockLocations) {// 获取块存储的主机节点String[] hosts blockLocation.getHosts();for (String host : hosts) {System.out.println(host);}}System.out.println(———–班长的分割线———-);}// 3 关闭资源fs.close();
}3.2.6HDFS文件和文件夹判断
Test
public void testListStatus() throws IOException, InterruptedException, URISyntaxException{// 1 获取文件配置信息Configuration configuration new Configuration();FileSystem fs FileSystem.get(new URI(hdfs://hdp101:9000), configuration, root);// 2 判断是文件还是文件夹FileStatus[] listStatus fs.listStatus(new Path(/));for (FileStatus fileStatus : listStatus) {// 如果是文件if (fileStatus.isFile()) {System.out.println(f:fileStatus.getPath().getName());}else {System.out.println(d:fileStatus.getPath().getName());}}// 3 关闭资源fs.close();
}3.3 HDFS的I/O流操作
上面我们学的API操作HDFS系统都是框架封装好的。那么如果我们想自己实现上述API的操作该怎么实现呢
我们可以采用IO流的方式实现数据的上传和下载。
3.3.1HDFS文件上传
1需求把本地e盘上的banhua.txt文件上传到HDFS根目录
2编写代码
Test
public void putFileToHDFS() throws IOException, InterruptedException, URISyntaxException {// 1 获取文件系统Configuration configuration new Configuration();FileSystem fs FileSystem.get(new URI(hdfs://hdp101:9000), configuration, root);// 2 创建输入流FileInputStream fis new FileInputStream(new File(e:/banzhang.txt));// 3 获取输出流FSDataOutputStream fos fs.create(new Path(/banhua.txt));// 4 流对拷IOUtils.copyBytes(fis, fos, configuration);// 5 关闭资源IOUtils.closeStream(fos);IOUtils.closeStream(fis);fs.close();
}3.3.2HDFS文件下载
1需求从HDFS上下载banhua.txt文件到本地e盘上
2编写代码
// 文件下载
Test
public void getFileFromHDFS() throws IOException, InterruptedException, URISyntaxException{// 1 获取文件系统Configuration configuration new Configuration();FileSystem fs FileSystem.get(new URI(hdfs://hdp101:9000), configuration, root);// 2 获取输入流FSDataInputStream fis fs.open(new Path(/banhua.txt));// 3 获取输出流FileOutputStream fos new FileOutputStream(new File(e:/banhua.txt));// 4 流的对拷IOUtils.copyBytes(fis, fos, configuration);// 5 关闭资源IOUtils.closeStream(fos);IOUtils.closeStream(fis);fs.close();
}3.3.3定位文件读取
1需求分块读取HDFS上的大文件比如根目录下的/hadoop-2.7.2.tar.gz
2编写代码
1下载第一块
Test
public void readFileSeek1() throws IOException, InterruptedException, URISyntaxException{// 1 获取文件系统Configuration configuration new Configuration();FileSystem fs FileSystem.get(new URI(hdfs://hdp101:9000), configuration, root);// 2 获取输入流FSDataInputStream fis fs.open(new Path(/hadoop-2.7.7.tar.gz));// 3 创建输出流FileOutputStream fos new FileOutputStream(new File(e:/hadoop-2.7.7.tar.gz.part1));// 4 流的拷贝byte[] buf new byte[1024];for(int i 0 ; i 1024 * 128; i){fis.read(buf);fos.write(buf);}// 5关闭资源IOUtils.closeStream(fis);IOUtils.closeStream(fos);fs.close();
}2下载第二块
Test
public void readFileSeek2() throws IOException, InterruptedException, URISyntaxException{// 1 获取文件系统Configuration configuration new Configuration();FileSystem fs FileSystem.get(new URI(hdfs://hdp101:9000), configuration, root);// 2 打开输入流FSDataInputStream fis fs.open(new Path(/hadoop-2.7.7.tar.gz));// 3 定位输入数据位置fis.seek(1024*1024*128);// 4 创建输出流FileOutputStream fos new FileOutputStream(new File(e:/hadoop-2.7.7.tar.gz.part2));// 5 流的对拷IOUtils.copyBytes(fis, fos, configuration);// 6 关闭资源IOUtils.closeStream(fis);IOUtils.closeStream(fos);
}3合并文件
在Window命令窗口中进入到目录E:\然后执行如下命令对数据进行合并
type hadoop-2.7.2.tar.gz.part2 hadoop-2.7.2.tar.gz.part1
合并完成后将hadoop-2.7.2.tar.gz.part1重新命名为hadoop-2.7.2.tar.gz。解压发现该tar包非常完整。
- 上一篇: 银川专业做网站的公司邯郸网站制
- 下一篇: 引导交互 网站WordPress主题2017
相关文章
-
银川专业做网站的公司邯郸网站制
银川专业做网站的公司邯郸网站制
- 技术栈
- 2026年04月20日
-
银川网站制作报价wordpress国内视频网站吗
银川网站制作报价wordpress国内视频网站吗
- 技术栈
- 2026年04月20日
-
银川网站推广3000元做网站
银川网站推广3000元做网站
- 技术栈
- 2026年04月20日
-
引导交互 网站WordPress主题2017
引导交互 网站WordPress主题2017
- 技术栈
- 2026年04月20日
-
引航博景网站做的好吗网络设计专业工资
引航博景网站做的好吗网络设计专业工资
- 技术栈
- 2026年04月20日
-
引领网站软件技术适合女生学吗
引领网站软件技术适合女生学吗
- 技术栈
- 2026年04月20日






