为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

分布式计算与hadoop原理-用Java拷贝文件到HDFS

2020-03-08 19页 doc 59KB 9阅读

用户头像

is_005190

暂无简介

举报
分布式计算与hadoop原理-用Java拷贝文件到HDFS用Java拷贝文件到HDFS 1、启动Hadoop服务 1.1、实验资源说明 本实验开始时,读者会有四台Centos 7的linux主机,其中三台master ,slave1,slave2已经配置好Hadoop集群环境,只需要在主服务器(namenode)上执行hdfs namenode -format 格式化命令后即可启动Hadoop集群。 另外一台develop-pc为用来开发的PC机,上面已经安装好jdk和eclipse。 1.2、启动Hadoop服务 在主服务器(master)上,到hadoop安装目录/usr/lo...
分布式计算与hadoop原理-用Java拷贝文件到HDFS
用Java拷贝文件到HDFS 1、启动Hadoop服务 1.1、实验资源说明 本实验开始时,读者会有四台Centos 7的linux主机,其中三台master ,slave1,slave2已经配置好Hadoop集群环境,只需要在主服务器(namenode)上执行hdfs namenode -format 格式化命令后即可启动Hadoop集群。 另外一台develop-pc为用来开发的PC机,上面已经安装好jdk和eclipse。 1.2、启动Hadoop服务 在主服务器(master)上,到hadoop安装/usr/local/zhitu/hadoop-2.7.3下,格式化namenode并启动hadoop集群。 ?启动完成后,可以简单的使用jps命令查看服务是否启动成功。 参考命令: cd /usr/local/zhitu/hadoop-2.7.3 bin/hdfs namenode -format复制 sbin/./start-all.sh jps 1.3、使用Eclipse新建Maven项目 在分配的develop-pc上打开Eclipse开发工具(第一次打开的时候会要求选择一个工作目录,按默认目录即可)。 新建名称为hadoop 的maven项目。 参考步骤如下: ?选择Eclipse菜单栏 File菜单里的New 下的Maven Project 选项,如下图: 如果没有Maven Project选项,可选择 Other 选项后,输入Maven 查找: 点击next,在弹出的窗口中,勾选中Create a simple project 选项,如下图: 点击Next按钮,在弹出的窗口中,Group id (一般为公司组织名称)填写 :learning ,Artifact Id(项目名称) 填写:hadoop ,如下图: 点击finish 按钮。 在建好的项目hadoop上 右键,选择Build Path à Configure Build Path...  ,如下图: 如果没有Build Path ,需要在hadoop右键,选择Maven à Update Project 如下图: 在弹出的窗口中左边窗口选择Java Build Path,右边选择Libraries 下的JRE System Libray选项后,点击 Edit 按钮,如下图所示: 在弹出的窗口中,选择我们安装的1.8版本的jdk(要求1.7以上的Jdk),如下图: 点击Finish按钮,然后将设置保存。 再选择左边Java Compiler选项,将右边的Compiler compliance level:  设置为1.8 ,如下图: 点击OK按钮,并在弹出的确认窗口点击Yes。 1.4、编写pom.xml文件 编辑pom.xml,添加开发项目所依赖的jar包。 pom.xml参考内容如下: ? 4.0.0 learning hadoop 0.0.1-SNAPSHOT   2.7.3 org.apache.hadoop hadoop-client ${hadoop.version} maven-compiler-plugin 3.0 1.8 1.8 org.apache.maven.plugins maven-surefire-plugin true 保存之后, Eclipse 应该会自动开始下载依赖 jar 包,如下图,已经将依赖的jar下载: 如果没有自动下载,可以在Pom.xml文件上点击右键选择Run As àMaven install来下载依赖jar包,如下图: 2、开发读取hdfs系统里的文件的代码 2.1、开发读取hdfs系统里的文件的代码 在src目录下新建package:com.learning.hadoop,在该package下新建clss:HadoopUtils.java 。 参考步骤: 在src/main/java上点击右键新建Package,如下图: 在弹出的窗口中Name: 里填写 com.learning.hadoop ,如下图: 点击Finish按钮。再在创建的Package com.learning.hadoop上点击右键选择New à Class 创建一个类,类名叫HadoopUtils,并勾选创建 main选项,如下图: 点击Finish按钮。 编辑HadoopUtils.java ,参考代码如下: package com.learning.hadoop; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; public class HadoopUtils { private Configuration conf; private FileSystem fileSystem; public HadoopUtils() { // 加载配置文件,默认会加载CLASSPATH下的core-site.xml conf = new Configuration(); // 也可以自己手动加载配置文件 如下 // conf.addResource("core-site.xml"); try { // 用超级管理员账号 不会存在权限问题 fileSystem = FileSystem.get(new URI(conf.get("fs.defaultFS")), conf, conf.get("loginName")); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } catch (URISyntaxException e) { e.printStackTrace(); } } /** * 读取文件,对应 cat命令 get命令 可以将字节从新生成文件 * * @param fileUri */ public void readFile(String fileUri) { Path path = new Path(fileUri); try { //先判断文件路劲是否存在,如果存在,则创建读取文件流的对象,并读取数据 } catch (IOException e) { e.printStackTrace(); } public void log(String s) { System.out.println(s); } public static void main(String[] args) { HadoopUtils hdfsFileSystem = new HadoopUtils(); hdfsFileSystem.readFile("/readhadoop.txt");  } } 如果程序有报错,在项目上右键,选择Maven -> Update project... 在src/main/resources/ 目录下新建core-site.xml文件,用来配置hdfs系统地址以及访问用户名。 参考内容如下(192.168.26.201为hadoop集群master服务器的ip,root为启动hadoop服务的用户,请根据自己实际情况修改): ?  fs.defaultFS hdfs://192.168.26.201:9000 loginName root 2.2、准备测试数据 在master服务器上目录/usr/local/zhitu/ 目录下创建一个readhadoop.txt文件,并输入内容为: Hello hadoop , this is my first hadoop program! 再将文件上传到hdfs系统的根目录下。 参考命令: echo 'Hello hadoop,'>>/usr/local/zhitu/readhadoop.txt echo 'this is my first hadoop program!'>>/usr/local/zhitu/readhadoop.txt bin/hdfs dfs -put /usr/local/zhitu/readhadoop.txt / 在可以运行刚刚编写的HadoopUtils.java,在HadoopUtils.java文件上点击右键,选择Run As à Java Application,如下图: 查看运行结果: 可以查看到已经成功将hdfs系统里的文件读取出来了。 3、开发上传本地文件到hdfs系统里的代码 3.1、开发上传本地文件到hdfs系统里的代码 在上一步中的HadoopUtils.java文件里 新增copyFromLocal(String localPath,String remoteUri) 方法,实现将本地文件上传到hdfs系统里的功能。 参考代码如下: ? public void copyFromLocal(StringlocalPath,String remoteUri){ Path src = new Path(localPath); Path dst = new Path(remoteUri); try { //复制文件 fileSystem.copyFromLocalFile(src, dst); log("over!"); } catch (IOException e) { e.printStackTrace(); } } 3.2、测试上一步中开发的代码 修改Main方法,测试上一步中开发的代码。将本地文件上传到hdfs中,并使用hdfs命令查看上传文件的内容。 参考步骤: 将main方法修改为如下: public static void main(String[] args) { HadoopUtils hdfsFileSystem = new HadoopUtils(); //hdfsFileSystem.readFile("/readhadoop.txt");   hdfsFileSystem.copyFromLocal("/root/local.txt","/fromlocal.txt"); } 在develop-pc的/root目目录下新建local.txt,输入如下内容: 这是我本地的文件 This is my local file! 新建文件的方法如下: 点击“应用程序”,选择“系统工具”下的“终端”,打开终端窗口: 使用命令: cd /root touch local.txt echo '这是我本地的文件'>>local.txt echo 'This is my local file!'>>local.txt 再用上一步中同样的方法运行HadoopUtils.java,结果如下: 此时文件应该是已经上传到hdfs系统里了,我们可以在master服务器上使用hdfs命令查看, 参考命令: ?bin/hdfs dfs -ls  bin/hdfs dfs -cat /fromlocal.txt
/
本文档为【分布式计算与hadoop原理-用Java拷贝文件到HDFS】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索