伪分布式Hadoop下Java API调用

伪分布式Hadoop下Java API 调用以及一些问题的解决方案

大家好,我是村口靠捡牛粪过日子的可怜虫

最近比较忙都没时间写博客了,想想也没什么分享,就给大家分享一些我的报告。这次分享的是Hadoop的Java API调用。

一、 实验目的

(1) 理解HDFS在Hadoop体系结构中的角色

(2) 熟练使用HDFS操作常用的shell命令

(3) 熟悉HDFS操作常用的Java API

二、 实验环境

类型名称版本
虚拟机软件VMware Workstation Pro16.0.0 build-16894299
MasterCentOS6.10
Slave1CentOS6.10
Slave2CentOS6.10
JdkJdkjdk1.8.0_141
HadoopHadoop2.8.1
Ssh软件Terminus7.7.1

一、 实验内容(步骤)和完成情况

(1) HDFS Shell 操作 – ls

在这里插入图片描述

可以查看到HDFS根目录(/)下的所有文件以及文件夹,修改路径可以查看任意路径下文件。

(2) HDFS Shell 操作 – mkdir

在这里插入图片描述

通过-mkdir可以在任意路径下创建文件夹,创建时无提示,但可以通过-ls查看。

(3) HDFS Shell 操作 – put

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

两种方式,成功上传文件。

(4) HDFS Shell 操作 – rmdir\ rm

在这里插入图片描述

只能对空文件夹remove,所以要递归删除。

在这里插入图片描述

针对有文件夹或单个文件,都用rm删除。

(1) HDFS Shell 操作 – cat

在这里插入图片描述

首先在/wordcount/input路径下有hello.txt文件,二个行命令用cat查看内部内容。

(2) HDFS Shell 操作 – get

在这里插入图片描述

成功将HDFS的文件保存到本地。

(3) HDFS****的Java API操作 – 向HDFS上传文件

在这里插入图片描述

HadoopUtils****作为工具类,负责定义一些配置信息,具体内容如下:

在这里插入图片描述

执行上述方法后,可通过浏览器查看文件如下:

在这里插入图片描述

(4) HDFS****的Java API操作 – 从HDFS下载文件

在这里插入图片描述

在这里插入图片描述

执行上述方法,得到结果如上图,除了需要下载的文件外,还附带crc校验文件。

(5) HDFS****的Java API操作 – 将HDFS文件内容输出到终端

在这里插入图片描述

在这里插入图片描述

输出结果如下:

在这里插入图片描述

(6) HDFS****的Java API操作 – 显示路径下所有文件的权限、大小、路径、创建时间等信息

在这里插入图片描述

打印结果如下:

在这里插入图片描述

(7) HDFS****的Java API操作 – 向HDFS文件追加内容

在这里插入图片描述

分别打印插入前与插入后的内容,结果如下:

在这里插入图片描述

以中文插入后为分割,可以看到插入后确实多了一行内容hadoop hello。

在这里插入图片描述

(8) Web – 查看文件列表操作

查看指定路径下的文件结果如下:

在这里插入图片描述

在其他路径下的结果如下:

在这里插入图片描述

(9) Web – 创建文件夹

在指定路径下创建文件夹:

在这里插入图片描述

反馈显示创建成功:

在这里插入图片描述

通过HDFS的WEB可以查看到ccc文件夹创建成功:
在这里插入图片描述

(10) Web – 删除指定路径

删除刚创建的ccc文件夹,由于是文件夹所以需要勾选递归删除:

在这里插入图片描述

反馈删除成功:

在这里插入图片描述

再次查看HDFS结果如下,ccc文件夹删除成功:

在这里插入图片描述

(11) Web – 查看文件内容

查看文件内容,直接打印到页面中:

在这里插入图片描述

结果如下:

在这里插入图片描述

(12) Web – 上传文件到指定路径

将文件上传至指定路径,首先在HDFS中aaa文件夹下无文件:

在这里插入图片描述

上传文件,点击提交,得到上传成功反馈:
在这里插入图片描述

再次查看HDFS的aaa文件夹下内容:

在这里插入图片描述

一、 出现的问题

(1) 报错AccessControlException: Permission denied

解决方法:出现这个问题是因为访问HDFS的用户的权限问题,需要打开hdfs-site.xml,在configuration中添加以下代码段:

<property>
  <name>dfs.permissions.enabled</name>
  <value>false</value>
</property>

添加完毕重新启动集群即可。

(2) 报错org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.SafeModeException): Cannot add block to / Name node is in safe mode.

解决方法:出现该问题是因为HDFS处于安全模式,不允许写、修改、删除操作,需要通过命令行退出安全模式:

sbin]# hadoop dfsadmin -safemode leave

(3) 报错java.lang.InterruptedException

在HDFS shell中执行put命令时报错,解决方法:在对应路径创建文件夹,或者是因为路径没写对。

eption): Cannot add block to / Name node is in safe mode.**

解决方法:出现该问题是因为HDFS处于安全模式,不允许写、修改、删除操作,需要通过命令行退出安全模式:

sbin]# hadoop dfsadmin -safemode leave

(3) 报错java.lang.InterruptedException

在HDFS shell中执行put命令时报错,解决方法:在对应路径创建文件夹,或者是因为路径没写对。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值