2.HDFS应用

  • 实验目的

掌握HDFS安装、HDFS命令和HDFS Java API编程。

  • 实验内容
  1. 掌握HDFS命令使用方法;
  2. 熟悉开发环境配置和编码过程;
  3. 掌握HDFS Java API的基本用法。
  • 实验步骤

    一、HDFS配置和启动

修改HDFS配置并在集群中启动HDFS。

二、HDFS命令行测试

    在集群节点中输入HDFS命令行完成目录管理和文件上传/下载等操作,具体完成以下操作:

  1. 查看HDFS根目录;

  1. HDFS根目录创建文件夹test

  1. Linux中上传一个文件至HDFS/test目录;

  1. 将该文件从HDFS下载至/Home目录中。

三、HDFS Java API测试

       1. 在IntelliJ IDEA或Eclipse环境中创建一个Maven项目,并使用HDFS的Java API操作HDFS

       (1) 下载IntelliJ IDEAEclipse,并创建Maven项目;

参考博客:idea建立一个maven项目

https://www.cnblogs.com/Eilen/p/6604411.html

       (2) 编辑pom.xml文件,引用必要的Hadoop和HDFS组件,注意Hadoop中的JDK版本与Windows中的版本保持一致,操作方法和maven配置方法见《IntelliJ IDEA配置HDFS Java API》;

查询maven组件配置https://mvnrepository.com/

   需要查询的组件(自己判断合适的版本):

   hadoop-client

   hadoop-hdfs

   hadoop-common

   将所有查询到的组件的XML插入到<dependencies></dependencies>节点中去,如下图:

 

中间出现了Idea卡在Resolving Maven dependencies这个问题

解决方案参考博客:

Idea卡在Resolving Maven dependencies的解决方案

https://blog.csdn.net/dyc_main/article/details/86706404

最后

更换镜像源,参考博客

IntelliJ IDEA 中更改 maven 镜像源

https://www.cnblogs.com/recovic/p/change-maven-mirror-in-idea.html

 

       (3) 使用Java API编写代码并调试,将Windows中的一个文件上传至HDFS指定目录,常见异常参见《HDFS Java API常见异常解决方案》;

写程序时出现的问题:

参考博客:IntelliJ IDEAProject目录不显示SRC目录和鼠标右键新建时,选项没有Java class的解决方法和具体解释

https://blog.csdn.net/qq_26465035/article/details/80116495

中间出现的问题:

·hadoop客户端操作出现:

Exception in thread "main" org.apache.hadoop.security.AccessControlException:

参考博客:

https://blog.csdn.net/IUNIQUE/article/details/84315043

·could only be written to 0 of the 1 minReplication nodes.

解决方案:

  1. 关闭集群:

Hadoop的对应目录下,进行sbin/stop-all.sh

  1. 删除dfs文件下的数据第二步:删除所有名字为dfs的文件夹,我这里有以下两个文件夹,分别删除两次:

所有节点都需要

rm -rf  /home/hadoop/dfs/data/*

rm -rf  /home/hadoop//tmp/dfs/*

  1. 格式化HDFS

Hadoop的对应目录下,./bin/hdfs namenode -format

  1. 重启hadoop

Hadoop的对应目录下,进行 sbin/start-all.sh

(4) 在集群中使用HDFS命令查看是否上传成功。

       2. (选做)如何在Web项目中访问HDFS,实现在Web页面操作上传下载HDFS中的文件。

(1) 用Maven构建一个Java EE项目,并添加HDFS Java API相关组件;

(2) 在JSP或Servlet的服务端代码中访问HDFS,并与前端页面功能关联起来。

四、实验结果

      试验运行过程及结果

如上步骤所示

五、实验体会

一二部分的HDFS启动以及命令行测试较为简单。

第三部分,因为之前完全没有接触过maven项目的建立,一开始有点不知所措。开始百度maven教程。

到第三部分的(2)将所有查询到的组件的XML插入到<dependencies></dependencies>节点中去,所找到的hadoop-client、hadoop-hdfs、hadoop-common一直是红色(就是未找到,未导入的意思),控制台一直卡在Resolving Maven dependencies。后面进行了镜像源的更改,以及修改maven Importing的jvm参数, 默认为700多, 直接修改成 -Xms1024m -Xmx2048m,得以解决。

Java程序的创建部分,也十分的不熟练了。IntelliJ IDEA的Project目录不显示SRC目录和鼠标右键新建时,选项没有Java class,也是改了好久的sources才好。

程序运行后,出现

Exception in thread "main" org.apache.hadoop.security.AccessControlException:

以及:

Exception in thread "main" org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /home/navy/files/yc.txt could only be written to 0 of the 1 minReplication nodes. There are 0 datanode(s) running and no node(s) are excluded in this operation。主要是后一个问题,可能是因为我之前hadoop namenode -format次数有点多,这样是不正确的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值