Spark编程实验一:Spark和Hadoop的安装使用

目录

一、目的与要求

二、实验内容

三、实验步骤

1、安装Hadoop和Spark

2、HDFS常用操作

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

四、结果分析与实验体会


一、目的与要求

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

二、实验内容

1、安装Hadoop和Spark

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

2、HDFS常用操作

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

(1)启动Hadoop,在HDFS中创建用户目录“/user/你的名字的拼音”。以张三同学为例,创建 /user/zhangsan ,下同;
(2)在Linux系统的本地文件系统的“/home/zhangsan”目录下新建一个文本文件test.txt,并在该文件中至少十行英文语句,然后上传到HDFS的“/user/zhangsan”目录下;
(3)把HDFS中“/user/zhangsan”目录下的test.txt文件,下载到Linux系统的本地文件系统中的“/tmp”目录下;
(4)将HDFS中“/user/zhangsan”目录下的test.txt文件的内容输出到终端中进行显示;
(5)在HDFS中的“/”目录下,创建子目录input,把HDFS中“/user/zhangsan”目录下的test.txt文件,复制到“/input”目录下;
(6)删除HDFS中“/user/zhangsan”目录下的test.txt文件;
(7)查找HDFS中所有的 .txt文件;
(8)使用hadoop-mapreduce-examples-3.1.3.jar程序对/input目录下的文件进行单词个数统计,写出运行命令,并验证运行结果。

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

(1)在pyspark中读取Linux系统本地文件“/home/zhangsan/test.txt”,然后统计出文件的行数;
(2)在pyspark中读取HDFS系统文件“/user/zhangsan/test.txt”,然后统计出文件的行数;
(3)编写独立应用程序,读取HDFS系统文件“/user/zhangsan/test.txt”,然后统计出文件的行数;通过 spark-submit 提交到 Spark 中运行程序。

三、实验步骤

1、安装Hadoop和Spark

        进入Linux系统,完成Hadoop伪分布式模式的安装。完成Hadoop的安装以后,再安装Spark(Local模式)。具体安装步骤可以参照我前面写的博客:

大数据存储技术(1)—— Hadoop简介及安装配置-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/Morse_Chen/article/details/134833801Spark环境搭建和使用方法-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/Morse_Chen/article/details/134979681

2、HDFS常用操作

(1)启动Hadoop,在HDFS中创建用户目录“/user/你的名字的拼音”。以张三同学为例,创建 /user/zhangsan ,下同;

[root@bigdata zhc]# start-dfs.sh
[root@bigdata zhc]# jps

[root@bigdata zhc]# hdfs dfs -mkdir -p /user/zhc
[root@bigdata zhc]# hdfs dfs -ls /user

 

(2)在Linux系统的本地文件系统的“/home/zhangsan”目录下新建一个文本文件test.txt,并在该文件中至少十行英文语句,然后上传到HDFS的“/user/zhangsan”目录下;

[root@bigdata zhc]# cd /home/zhc
[root@bigdata zhc]# vi test.txt
[root@bigdata zhc]# hdfs dfs -put /home/zhc/test.txt /user/zhc

test.txt 文件内容如下: 

welcome to linux
hello hadoop
spark is fast
hdfs is good
start pyspark
use python
scala and R
great success
I love spark
ten

这里可以看到上传成功了。 

(3)把HDFS中“/user/zhangsan”目录下的test.txt文件,下载到Linux系统的本地文件系统中的“/tmp”目录下;

[root@bigdata zhc]# hdfs dfs -get /user/zhc/test.txt /tmp/

(4)将HDFS中“/user/zhangsan”目录下的test.txt文件的内容输出到终端中进行显示;

[root@bigdata zhc]# hdfs dfs -cat /user/zhc/test.txt

(5)在HDFS中的“/”目录下,创建子目录input,把HDFS中“/user/zhangsan”目录下的test.txt文件,复制到“/input”目录下;

[root@bigdata zhc]# hdfs dfs -cp /user/zhc/test.txt /input/

(6)删除HDFS中“/user/zhangsan”目录下的test.txt文件;

[root@bigdata zhc]# hdfs dfs -rm -f /user/zhc/test.txt

(7)查找HDFS中所有的 .txt文件;

[root@bigdata zhc]# hdfs dfs -ls -R / | grep -i '\.txt$'

(8)使用hadoop-mapreduce-examples-3.1.3.jar程序对/input目录下的test.txt文件进行单词个数统计,写出运行命令,并验证运行结果。

注意:在做这一步之前,要先启动yarn进程;
           指定输出结果的路径/output,该路径不能已存在。

先切换到 /usr/local/servers/hadoop/share/hadoop/mapreduce 路径下,然后再开始统计单词个数。

[root@bigdata zhc]# cd /usr/local/servers/hadoop/share/hadoop/mapreduce
[root@bigdata mapreduce]# hadoop jar hadoop-mapreduce-examples-3.1.3.jar wordcount /input/test.txt /output

输入命令查看HDFS文件系统中/output目录下的结果。 

[root@bigdata mapreduce]# hdfs dfs -ls /output
[root@bigdata mapreduce]# hdfs dfs -cat /output/part-r-00000

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

先在终端启动Spark。

[root@bigdata zhc]# pyspark

 (1)在pyspark中读取Linux系统本地文件“/home/zhangsan/test.txt”,然后统计出文件的行数;

>>> textFile=sc.textFile("file:///home/zhc/test.txt")
>>> linecount=textFile.count()
>>> print(linecount)

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

注意:由于在第2题的(6)问中,已经删除了HDFS中“/user/zhangsan”目录下的test.txt文件,所以这里要重新将test.txt文件从本地系统上传到HDFS中

[root@bigdata zhc]# hdfs dfs -put /home/zhc/test.txt /user/zhc
>>> textFile=sc.textFile("hdfs://localhost:9000/user/zhc/test.txt")
>>> linecount=textFile.count()
>>> print(linecount)

(3)编写独立应用程序,读取HDFS系统文件“/user/zhangsan/test.txt”,然后统计出文件的行数;通过 spark-submit 提交到 Spark 中运行程序。

[root@bigdata mycode]# vi CountLines_hdfs.py
[root@bigdata mycode]# spark-submit CountLines_hdfs.py 

CountLines_hdfs.py文件内容如下:

from pyspark import SparkContext
FilePath = "hdfs://localhost:9000/user/zhc/test.txt"
sc = SparkContext("local","Simple App")
data = sc.textFile(FilePath).cache( )
print("文件行数:",data.count())

四、结果分析与实验体会

        通过本次Spark实验,学会了如何安装、启动Hadoop和Spark,并掌握了HDFS的基本使用方法,使用Spark访问本地文件和HDFS文件的方法。在Linux系统的本地文件系统和在HDFS中分别进行各种文件操作,然后在Spark中读取文件系统的数据,并能统计文件的行数。
        在做第三题(2)时,在pyspark中读取HDFS系统文件“/user/zhangsan/test.txt”,要将第二题(6)中删除的test.txt文件重新上传到HDFS中,注意文件路径要写正确, file_path=“hdfs:///user/zhc/test.txt”。在第三题(3)中,可以修改如下路径中的文件 /usr/local/spark/conf/log4j.properties.template,将文件中内容 “log4j.rootCategory=INFO” 改为 “log4j.rootCategory=ERROR”,这样在输出结果时,就不会显示大量的INFO信息,使得结果更简化。

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

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

相关文章

SCADA助力食品加工数字化变革:未来产业的智慧引擎

一、背景介绍 当前,在国际市场竞争加剧、消费者个性化需求突出的背景下,我国食品加工行业面临着诸多挑战:越发严苛的食品安全标准、追求供应链的透明度和效率、进一步提高产品质量和降低成本等等。 为了应对上述挑战,我国食品加…

亚马逊,速卖通,shein卖家如何准确有效的测评补单

一、合理规划测评时间和数量 卖家需要合理规划测评的时间和数量。如果卖家过于频繁地进行测评,或者在短时间内进行大量的测评,这可能会被视为恶意行为,从而触犯风控机制。因此,卖家需要根据自己的销售情况和市场需求,…

如何确保对称密钥管理的存储安全?

确保对称密钥管理的存储安全是保障信息安全的重要一环。以下是一些建议,以确保对称密钥管理的存储安全: 使用安全存储设备:选择使用经过验证的安全存储设备来存储对称密钥。这些设备通常具有高度的物理安全性,可以防止未经授权的访…

vp与vs联合开发-通过CogAcqFifoTool工具连接相机

1.完成相机硬件配置后 2.完成vp与vs联合开发配置功能后 1.创建winform 项目 目的 : 搭建 界面应用 2. 1. vpp文件存入 项目的debug 目录中 目的: 在项目中加载本地vpp文件 读取相机工具 1.控件CogRecordDisplay 用于显示相机拍摄照片和实施显示的窗口 2和3 …

aidd【人工智能技术及在生物分子活性预测、药物发现中的应用】

人工智能技术在生物分子活性预测和药物发现中具有广泛的应用。以下是一些具体的应用方式: 生物分子活性预测:利用机器学习算法,可以对生物分子的活性进行预测。这些算法可以学习并识别与生物分子活性相关的模式,并基于这些模式对…

2024年业务流程管理(BPM)的10大发展趋势

业务流程管理(BPM)及其相关技术已经伴随着企业数十载。然而,在最近几年里,BPM 和它的辅助工具经历了重大的变革,这些变化归功于RPA、流程挖掘和低代码开发平台的兴起。Gartner 也提出了一个全新的概念——“超级自动化…

机器学习笔记 - 用于时间序列分析的深度学习技术

一、简述 过去,时间序列分析采用自回归综合移动平均线等传统统计方法。然而,随着深度学习的出现,研究人员探索了各种神经网络架构来建模和预测时间序列数据。 深度学习技术,例如(LSTM)长短期记忆、卷积神经网络和自动编码器,已经在时间序列预测、异常检测和模式识别方面…

UE5 C++(六)— 枚举UENUM、结构体USTRUCT和补充属性说明符

文章目录 枚举(ENUM)第一种方式第二种方式 结构体(USTRUCT)补充属性说明符(ExposeOnSoawn)结构体创建数据表格 枚举(ENUM) 第一种方式 定义枚举 UENUM(BlueprintType) namespace …

Rust基本语法

Rust基本语法 Hello World fn main() {println!("Hello, world!"); }Rust数据类型 Rust 是一种静态类型的语言。 Rust 中的每个值都是某种数据类型。 编译器可以根据分配给它的值自动推断变量的数据类型。 声明变量 使用关键词 let 声明变量。 直接赋值的场合R…

[C++从入门到精通] 14.虚函数、纯虚函数和虚析构(virtual)

📢博客主页:https://blog.csdn.net/weixin_43197380📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢本文由 Loewen丶原创,首发于 CSDN,转载注明出处🙉&…

解决docker alpine /bin/sh: ./main: not found

解决docker alpine /bin/sh: ./main: not found golang中编译之后的二进制文件部署在alpine镜像中出现了not found问题解决这种情况是因为动态链接库位置错误导致的,alpine镜像使用的是musl libc而不是gun libc。因而动态链接库的位置不一致。在基础镜像内执行&…

shell脚本报错 syntax error near unexpected token `$‘do\r‘‘

在我执行docker-compose up 的时候会去执行一个shell文件,如下图报错 看代码并未发现什么特别的错误 解决方案打开编辑器把分割符CRLF换成LF重新运行,其实是shell的换行符导致的

Elasticsearch的批量bulk 提交 写入的方式会有顺序问题吗?

Elasticsearch的分布式特性可能会导致写入操作的执行顺序与提交顺序稍有不同。在分布式环境中,Elasticsearch将数据分散到不同的节点上进行存储和处理,因此写入操作的执行顺序可能会受到网络延迟、负载均衡等因素的影响。 根源在于ES的分布式架构。如上图所示,客户端的命令首…

企业怎么选海外呼叫中心?企业在选择海外呼叫中心时需要考虑哪些关键因素呢?

在当今竞争激烈的商业环境下,企业需要建立一个高效可靠的海外呼叫中心来处理不同国家地区客户的需求和问题。选择合适的呼叫中心对于企业的发展至关重要。那么企业在选择海外呼叫中心时需要考虑哪些关键因素呢? 1.企业在选择海外呼叫中心之前应该明确自…

带大家做一个,易上手的家常辣椒炒鸡蛋

先打四五个鸡蛋 将鸡蛋搅拌均匀 绿辣椒切片 起锅烧油 倒入鸡蛋液 注意用锅铲过一会儿就动一动 别让鸡蛋粘锅了 鸡蛋定型后 用锅铲分成小块 然后 倒入绿辣椒 小半勺生抽 鸡蛋差不多了 就倒入少量盐(一点点就好) 然后 如果有条件 可以倒入一点点 孜然粉胡椒粉 然后就可以装…

问题表达式

问题表达式 目录 一. 概述二. 例题1. 例子一2. 例子二3. 例子三4. 例子四 三. 分析四. 总结 一. 概述 表达式的求值部分由操作符的优先级决定。但有时会由于编码的不规范,会导致表达式执行顺序混乱&#xf…

文件夹加密有哪些好处?电脑重要文件夹怎么加密?

对于每个使用电脑的人来说,文件夹是非常熟悉的数据管理工具。但文件夹并不具备安全保护功能,很容易导致数据泄露。因此,我们需要对文件夹进行加密。那么,电脑重要文件夹该怎么加密呢?下面我们就来一起了解一下。 文件夹…

【MAC】M2 安装docker 与 mysql

一、docker下载地址 下载地址 二、安装docker完成 罗列一下docker常用命令 # 查看docker版本 docker --version# 拉取镜像 docker pull 镜像名# 查看当前所有镜像 docker images# 查看运行中的容器 docker ps -a docker ps grep| 镜像名#镜像启动操作: sudo dock…

paddleocr 下载超时换源百度 ReadTimeOutError

pip install “paddleocr>2.0.1” -i https://mirror.baidu.com/pypi/simple

Axure中继器案例:中继器的repeater属性,中继器的Item属性

一.中继器的repeater属性 Repeater: 中继器的对象 visibleltemCount: 中继器项目列表中可见项的数量 ltemCount: 加载项数量 dataCount:获取中继器数据集中数据行的总数量 pageCount: 获取中继器分页的总数量,即能够获取分页后共有多少页 pagelndex: 获取中继器项目…