大数据编程实验一:HDFS常用操作和Spark读取文件系统数据

news2024/11/24 15:53:58

大数据编程实验一:HDFS常用操作和Spark读取文件系统数据

文章目录

  • 大数据编程实验一:HDFS常用操作和Spark读取文件系统数据
    • 一、前言
    • 二、实验目的与要求
    • 三、实验内容
    • 四、实验步骤
      • 1、HDFS常用操作
      • 2、Spark读取文件系统的数据
    • 五、最后我想说

一、前言

这是我们大数据专业开设的第二门课程——大数据编程,使用的参考书是《Spark编程基础》,这门课跟大数据技术基础是分开学习的,但这门课是用的我们自己在电脑上搭建的虚拟环境进行实验的,不是在那个平台上,而且搭建的还是伪分布式,这门课主要偏向于有关大数据编程方面的,而且使用的编程语言是Python。

我上课的时候也没有怎么听,所以我再自己做一遍实验。

二、实验目的与要求

  1. 掌握在Linux虚拟机中安装Hadoop和Spark的方法
  2. 熟悉HDFS的基本使用方法
  3. 掌握使用Spark访问本地文件和HDFS文件的方法

三、实验内容

  1. 安装Hadoop和Spark

    进入Linux系统,完成Hadoop伪分布式模式的安装。完成Hadoop的安装以后,再安装Spark(Local模式)。

  2. HDFS常用操作

    使用Hadoop提供的Shell命令完成如下操作:

    • 启动Hadoop,在HDFS中创建用户目录“/user/hadoop”
    • 在Linux系统的本地文件系统的“/home/hadoop”目录下新建一个文本文件test.txt,并在该文件中随便输入一些内容,然后上传到HDFS的“/user/hadoop”目录下
    • 把HDFS中“/user/hadoop”目录下的test.txt文件,下载到Linux系统的本地文件系统中的“/home/hadoop/下载”目录下
    • 将HDFS中“/user/hadoop”目录下的test.txt文件的内容输出到终端中进行显示
    • 在HDFS中的“/user/hadoop”目录下,创建子目录input,把HDFS中“/user/hadoop”目录下的test.txt文件,复制到“/user/hadoop/input”目录下
    • 删除HDFS中“/user/hadoop”目录下的test.txt文件,删除HDFS中“/user/hadoop”目录下的input子目录及其子目录下的所有内容
  3. Spark读取文件系统的数据

    • 在pyspark中读取Linux系统本地文件“/home/hadoop/test.txt”,然后统计出文件的行数
    • 在pyspark中读取HDFS系统文件“/user/hadoop/test.txt”(如果该文件不存在,请先创建),然后,统计出文件的行数
    • 编写独立应用程序,读取HDFS系统文件“/user/hadoop/test.txt”(如果该文件不存在,请先创建),然后,统计出文件的行数;通过 spark-submit 提交到 Spark 中运行程序

四、实验步骤

这里我们已经提前在课上安装好Hadoop和Spark,所以就不演示了,如果不会的话可以上网查阅一下有很多教程或者等我后面有空写一遍博客也许,我得先把实验做完才行。

我们直接进行后面两个步骤。

1、HDFS常用操作

首先启动Hadoop集群,我们输入如下命令进入到hadoop的sbin目录下面,然后执行启动指令:

cd /usr/local/servers/hadoop/sbin/
start-dfs.sh

然后使用jps查看进程验证是否启动成功:

在这里插入图片描述

然后我们再进入hadoop目录下的bin目录中,输入如下命令创建用户目录“/user/hadoop”:

hdfs dfs -mkdir -p /user/hadoop

然后我们在master主机内的“/home/hadoop”目录下新建一个文本文件test.txt:

vi /home/hadoop/test.txt

然后再文件中随便输入一些内容:

在这里插入图片描述

然后我们我们重新进入hadoop的bin目录中并将这个文件上传到HDFS的“/user/hadoop”目录下:

hdfs dfs -put /home/hadoop/test.txt /user/hadoop

查看一些我们是否成功上传到HDFS中:

hdfs dfs -ls /user/hadoop

在这里插入图片描述

可以看出我们上传成功了。

然后我们再通过如下命令把HDFS中“/user/hadoop”目录下的test.txt文件,下载到Linux系统的本地文件系统中的“/home/hadoop/下载”目录下:

hdfs dfs -get user/hadoop/test.txt /home/hadoop/

然后我们使用如下命令将HDFS中“/user/hadoop”目录下的test.txt文件的内容输出到终端中进行显示:

hdfs dfs -cat /user/hadoop/test.txt

在这里插入图片描述

我们再在HDFS中的“/user/hadoop”目录下,创建子目录input:

 hdfs dfs -mkdir /user/hadoop/input

并把HDFS中“/user/hadoop”目录下的test.txt文件,复制到“/user/hadoop/input”目录下:

hdfs dfs -cp /user/hadoop/test.txt /user/hadoop/input/

并查看一下是否复制成功:

hdfs dfs -ls /user/hadoop/input

在这里插入图片描述

最后我们删除HDFS中“/user/hadoop”目录下的test.txt文件:

hdfs dfs -rm -r /user/hadoop/test.txt

并删除HDFS中“/user/hadoop”目录下的input子目录及其子目录下的所有内容:

hdfs dfs -rm -r /user/hadoop/input

在这里插入图片描述

2、Spark读取文件系统的数据

我们首先启动pyspark:

cd /usr/local/spark/bin/
pyspark

在这里插入图片描述

启动pyspark之后我们就可以直接在这里面进行编程。

我们在pyspark中读取Linux系统本地文件“/home/hadoop/test.txt”,然后统计出文件的行数:

lines = sc.textFile("file:/home/hadoop/test.txt")
lines.count()

在这里插入图片描述

然后我们在pyspark中读取HDFS系统文件“/user/hadoop/test.txt”(如果该文件不存在,请先创建),然后,统计出文件的行数:

lines = sc.textFile("/user/hadoop/test.txt")
lines.count()

在这里插入图片描述

最后我们先在/home/hadoop中创建一个py文件并编写独立应用程序,读取HDFS系统文件“/user/hadoop/test.txt”(如果该文件不存在,请先创建),然后统计出文件的行数:

sudo vi st-app.py

在这里插入图片描述

最后通过 spark-submit 提交到 Spark 中运行程序:

/usr/local/spark/bin/spark-submit --master local[4] st-app.py 2>&1 | grep "The HDFS"

在这里插入图片描述

五、最后我想说

到这里本次实验就结束了,我重新做了一遍加深了一下印象,也更加熟练的使用这些Linux命令了。

后面一个实验就是RDD编程,我马上就会更新,Hold on!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2113.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Swift基础——字典

Swift基础——字典 嗯。。。前面我们已经学习了数组(相关文章地址),我们知道了在Swift中,苹果提供了两种集合类型来存储集合的值即Array和Dictionary。 Dictionary字典 字典:一种存储多个相同类型值的容器&#xff…

谈谈Java对象的生命周期

经过前面的分析 ,我们现在来看一下创建的对象到底是什么东西,并且完整的总结一下一个对象从创建到回收到底经过了哪些阶段。 1 对象的创建 对象创建的主要流程: 1.类加载检查 虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常…

【趣学算法】贪心算法、海盗古董装船问题

14天阅读挑战赛 努力是为了不平庸~ 算法学习有些时候是枯燥的,这一次,让我们先人一步,趣学算法! 文章目录贪心本质贪心选择最优子结构最优装载问题sort函数总结贪心本质 一个贪心算法总是做出当前最好的选择,也就是说…

R语言“优雅地“进行医学统计分析

本文首发于公众号:医学和生信笔记,完美观看体验请至公众号查看本文。 医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化。 文章目录主要函数描述性统计比较均值增强R中的ANOVA事后检验(post-hoc&…

嘉立创EDA的一些使用技巧

立创EDA专业版-使用教程 (lceda.cn):https://prodocs.lceda.cn/cn/faq/editor/index.html绘制板框:https://blog.csdn.net/gutie_bartholomew/article/details/122936253和 mil 的切换,按【Q】切换单位测量 AltM,方便地测量物件之间的距离。按…

MySQL调优之索引在什么情况下会失效?

MySQL中提高性能的一个最有效的方式是对数据表设计合理的索引。索引提供了高效访问数据的方法,并且加快查询的速度,因此索引对查询的速度有着至关重要的影响。 使用索引可以快速地定位表中的某条记录,从而提高数据库查询的速度,提…

Spring JdbcTemplate.queryForObject()

Spring JdbcTemplate 是JDBC核心包中的中心类。它简化了 JDBC 与 Spring 的使用&#xff0c;并有助于避免常见错误。在此页面上&#xff0c;我们将学习使用它的queryForObject 方法。 JdbcTemplate.queryForObject不同参数的方法。1. <T> T queryForObject(String sql, …

继承-安全-设计模式

继承 与 原型、原型链 1. 继承是什么&#xff1f; 继承就是一个对象可以访问另外一个对象中的属性和方法 2. 继承的目的&#xff1f; 继承的目的就是实现原来设计与代码的重用 3. 继承的方式 java、c等&#xff1a;class**javaScript&#xff1a; 原型链 ** ES2015/ES6 中…

数据导入与预处理-拓展-pandas可视化

数据导入与预处理-拓展-pandas可视化1. 折线图1.1 导入数据1.2 绘制单列折线图1.3 绘制多列折线图1.4 绘制折线图-双y轴2. 条形图2.1 单行垂直/水平条形图2.2 多行条形图3. 直方图3.1 生成数据3.2 透明度/刻度/堆叠直方图3.3 拆分子图4. 散点图4.1生成数据4.2 绘制大小不一的散…

自动化测试的使用场景有哪些?如何正确使用?

目录 前言 什么是自动化测试&#xff1f; 自动化测试的使用场景有哪些&#xff1f; 自动化测试有什么好处&#xff1f; 总结 前言 本文将通过介绍 自动化测试是什么 &#xff0c; 哪些场景适用于自动化测试 &#xff0c; 自动化测试的好处 &#xff0c; 以及通过 具体的自…

vue如何二次封装一个高频可复用的组件

在我们的业务里&#xff0c;我们通常会二次封装一些高频业务组件&#xff0c;比如弹框&#xff0c;抽屉&#xff0c;表单等这些业务组件&#xff0c;为什么要二次封装&#xff1f;我们所有人心里的答案肯定是&#xff0c;同样类似的代码太多了&#xff0c;我想复用组件&#xf…

2004-2020中小企业板上市公司财务报表股票交易董事高管等面板数据

1200变量&#xff01;中小企业板上市公司面板数据大全 2004-2020年 1、时间&#xff1a;2004-2020年 2、数据范围&#xff1a;共计973家上市公司 3、数据指标&#xff1a;包括财务报表、股票交易、董事高管等1200变量 4、用途&#xff1a;进行上市公司高管股权激励与公司绩…

C语言刷题系列——1.将三个整数按从大到小输出

将三个整数按从大到小输出1.输入三个整数2.最大的值放在a中&#xff0c;最小值放在c中&#xff0c;剩余的一个放在bstep1&#xff1a;a和b比较step2&#xff1a;a和c比较step3&#xff1a;b和c比较3.最终的代码1.输入三个整数 先写好main函数、头文件 #include <stdio.h&g…

用高并发技巧解决redis热key问题

​ 这篇文章我将介绍工作中处理热key问题的常用手段&#xff0c;可能介绍的不是很全&#xff0c;毕竟不同的业务场景可能有不同的解决方案&#xff0c;但是相信通过这部分的介绍能提供一个热key问题的思路。 热key问题&#xff0c;简单来说就是对某一资源的访问量过高问题&…

Unity学习shader笔记[一百零八]简单萤火效果

之前用粒子系统基于原有萤火虫的粒子改了一波慢萤火效果就被惊艳到了&#xff0c;开始大家讨论&#xff0c;就都觉得这样大数量的粒子消耗挺大的&#xff0c;后面测试过才发现单纯的粒子系统在总粒子数量3000&#xff0c;每秒300的生成数量&#xff0c;屏幕呈现有1000多个粒子的…

【黄啊码】MySQL入门—17、在没有备份的情况下,如何恢复数据库数据?

大家好&#xff01;我是黄啊码&#xff0c;MySQL的入门篇已经讲到第16个课程了&#xff0c;今天我们继续讲讲大白篇系列——科技与狠活之恢复数据库 在没做数据库备份&#xff0c;没有开启使用 Binlog 的情况下&#xff0c;尽可能地找回数据。 今天的内容主要包括以下几个部分…

2022NISCTF--web

easyssrf 打开题目&#xff0c;显示的是 尝试输入&#xff0c; 发现输入flag有东西 读取文件 访问下一个网站 读取文件 不能以file开头 直接伪协议&#xff0c;base64解码 checkIn 奇怪的unicode编码 当选中左边的时候右边也会被选中 我们在vscode看看 这样的额 展示的是UTF-1…

Linux系统中利用open函数多次打开同一个文件操作方法

大家好。 今天的话主要和大家聊一聊&#xff0c;在Linux系统中如果一个文件被打开多次会出现什么情况。 目录 第一&#xff1a;多次打开同一个文件 ​第二&#xff1a;一个文件被打开多次&#xff0c;在内存中不会存在多份动态文件 ​第三&#xff1a;多次open打开同一…

第一章 - Windows安装VMware Workstation Pro

文章目录前言一、VMware Workstation Pro安装的前提条件二、VMware Workstation Pro下载三、VMware Workstation Pro安装前言 Linux是一个开源、免费的操作系统&#xff0c;其稳定性、安全性、处理多并发已经得到业界认可&#xff0c;目前很多企业级的项目都会部署到Linux系统…

结构体内存对齐

在知道了结构体类型的基本使用之后&#xff0c;我们需要深入探讨一个问题&#xff0c;即计算结构体的大小&#xff0c;这也是一个热门的考点&#xff1a;结构体内存对齐。 目录 一、结构体的对齐规则 二、例题 2.1 例题一 2.2 例题二 2.3 例题三 ​编辑 三、为什么存在内存…