大数据实验(二)HDFS API的使用(Python 3.7)

前言

书本第六章的主要内容就是讲了HDFS的一些操作指令,还有非常简略的Java调用HDFS API代码的示例。虽然据说用Java的运行效率会高很多,可是我也没有系统地学过Java,而且看样子实际做起来比较繁琐,所以我还是选择了Python来实现HDFS API的调用。用Python特别好的地方就是后面的数据处理和可视化会方便很多,人生苦短,我用Python,哈哈哈哈哈哈哈哈。
其实用python2也可以,所以就可以省去安装python3的步骤了,不过好像要安装一下pip

Python入门

Python其实入门还是很简单的,没有接触过的同学,可以去菜鸟教程上面快速入门,还有慕课上面嵩天老师的也挺好。

本次所需工具

  1. Python安装包(官网下载速度很慢,可以从我这里下载(提取码: mxhv);
  2. VSCode(非必须)
  3. 正常启动的Hadoop集群

CentOS 7 安装Python 3.7

以下操作在Slave001上面执行,当然别的虚拟机应该也没问题

安装依赖

  • CentOS 7 本身缺少了一部分Python运行所需要的软件或者运行库,在root用户下执行以下命令安装
yum install gcc openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel libffi-devel tk-devel wget curl-devel ibffi-devel

编译和安装Python

还是在root用户下执行这些操作

  • 首先将下载好的Python安装包上传到Slave001
  • 解压(注意路径) tar -zxvf Python-3.7.0.tgz
  • 进入解压后的文件夹 cd Python-3.7.0, 编译./configure
  • 最后安装make && make install,这一步要好久好久好久好久
  • 为安装好的Python3和pip3创建软链接(可以理解为快捷方式)
ln -s /usr/local/bin/pip3 /usr/bin/pip3
ln -s /usr/local/bin/python3 /usr/bin/python3
  • 检查是否安装成功
pip3 -V
python3

输出结果如图:
在这里插入图片描述
输入exit()退出

修改pip源和安装库

切换回hadoop用户
pip是一个专门用来管理Python库的工具,可以安装删除库之类的。由于pip默认的源是国外的,下载库时的速度会很慢,所以我们把它修改为国内的源,这里我用的是阿里的源:

  • 切换到/home/hadoop目录,创建.pip/文件夹
cd ~/ && mkdir .pip
  • 创建pip.conf文件
vi .pip/pip.conf

添加以下内容

[global]
timeout = 6000
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
truste
### 大数据实验 HDFS教程 #### 实验目标 在Linux环境中编写读取和写入HDFS文件的代码,使用`jar`命令打包代码,在master服务器上运行HDFS读写程序。此外,还将在Windows上安装Eclipse Hadoop插件,并在Eclipse环境中编写读取和写入HDFS文件的代码,最后利用Xftp工具将实验电脑上的文件上传至master服务器。 #### 准备工作 为了确保能够顺利执行这些操作,需要先确认已正确配置Java环境以及Hadoop集群设置。对于任何涉及路径错误的问题,比如遇到`Wrong FS:hdfs://localhost:9000/user/hadoop/input.txt, excepted: file:///`这样的提示时,应检查当前使用的文件系统URI是否匹配实际需求[^4]。 #### 编码实现 以下是用于向HDFS写入文件的一个简单Java类示例: ```java import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; public class WriteToHDFS { public static void main(String[] args) throws Exception{ Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(conf); Path srcPath = new Path("/local/path/to/file"); // 替换为本地源文件路径 Path dstPath = new Path("hdfs://namenode:8020/destination/path/in/HDFS"); // 替换为目标HDFS路径 fs.copyFromLocalFile(srcPath, dstPath); System.out.println("成功复制到HDFS!"); fs.close(); } } ``` 编译并打包上述代码之后,可以通过如下命令将其提交给Hadoop集群来执行: ```bash $ hadoop jar your_program.jar com.yourpackage.WriteToHDFS /input/local/filepath /output/hdfspath ``` 同样地,可以从HDFS下载文件到本地系统的另一个例子如下所示: ```java import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; public class ReadFromHDFS { public static void main(String[] args)throws Exception{ Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(conf); Path hdfsSrcPath = new Path("hdfs://namenode:8020/source/path/in/HDFS"); Path localDstPath = new Path("/local/path/to/save"); fs.copyToLocalFile(hdfsSrcPath, localDstPath); System.out.println("成功从HDFS下载!"); fs.close(); } } ``` 需要注意的是,当涉及到跨平台开发(如在Windows下创建项目),可以考虑借助IDE的支持简化流程。例如,在Windows操作系统中安装Eclipse IDE及其对应的Hadoop插件后,可以直接在此集成开发环境中完成项目的构建与测试工作。 #### 文件传输 一旦完成了代码编写与调试阶段的工作,则可通过SFTP客户端软件(如WinSCP或FileZilla)或者专门针对SSH协议设计的数据传输工具(如Xftp)把最终版本的应用程序包发送到远程主机上去进一步部署和验证其功能表现。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值