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

一、目的与要求

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.rhkb.cn/news/217949.html

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

相关文章

Ignoring query to other database

登录数据库执行查看database的脚本提示 仔细观察才发现,登录的时候我写的是,没写 -u 退出重新登录,好了~

死锁的预防、避免、检测和消除

一、预防死锁 1. 破坏互斥条件 2. 破坏不剥夺条件 3.破坏请求和保持条件 4.破坏循环等待条件 二、避免死锁 避免死锁的一种方法是使用银行家算法,它涉及到安全序列的概念。银行家算法是一种资源分配和死锁避免的算法,它确保系统能够分配资源而不会导致死…

c/c++ 结构体、联合体、枚举

结构体 结构体内存对齐规则: 1、结构体的第一个成员对齐到结构体变量起始位置偏移量为0的地址处 2、其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。 对齐数:编译器默认的一个对齐数与该成员变量大小的较小值。 vs 中…

JMeter下载与安装

文章目录 前言一、安装java环境(JDK下载与安装)二、JMeter下载三、JMeter安装1.解压缩2.配置环境变量 四、JMeter启动(启动成功则代表JMeter安装成功)五、JMeter汉化(将JMeter修改成中文)1.方法一&#xff…

浅谈5G基站节能及数字化管理解决方案的设计与应用-安科瑞 蒋静

截至2023年10月,我国5G基站总数达321.5万个,占全国通信基站总数的28.1%。然而,随着5G基站数量的快速增长,基站的能耗问题也逐渐日益凸显,基站的用电给运营商带来了巨大的电费开支压力,降低5G基站的能耗成为…

用Bat文件调用小牛翻译api快速翻译

为了帮助大家更加轻松地调用机器翻译api,本人探索实现了一种可以通过BAT文件来调用机器翻译api,对粘贴板中的文本进行翻译,并将翻译结果保存为txt文件。下面把实现步骤简要说明如下: 第一步:获取小牛机器翻译api 进入…

【Spring Boot】内网穿透实现远程调用调试

文章目录 1. 本地环境搭建1.1 环境参数1.2 搭建springboot服务项目 2. 内网穿透2.1 安装配置cpolar内网穿透2.1.1 windows系统2.1.2 linux系统 2.2 创建隧道映射本地端口2.3 测试公网地址 3. 固定公网地址3.1 保留一个二级子域名3.2 配置二级子域名3.2 测试使用固定公网地址 4.…

记录hive/spark取最新且不为null的方法

听标题可能听不懂我想表达的意思,我来描述一下我要做的事: 比如采集同学对某一网站进行数据采集,同一个用户每天会有很多条记录,所以我们要取一条这个用户最新的状态,比如用户改了N次昵称,我们只想得到最后…

unity中:搭建在线AR应用

使用Imagine WebAR - Image Tracker插件部署WebGL应用 在使用Imagine WebAR - Image Tracker插件进行WebGL应用开发时,有两个关键知识点需要掌握: 1. 部署到支持HTTPS的服务器 由于WebGL应用需要访问用户的摄像头,因此必须在支持HTTPS的服…

人工智能与数据分析:新时代的趋势和机会

目录 写在开头1. 融合AI和数据分析的趋势1.1 趋势变化1.2 数据驱动目标转换 2 对数据分析行业的影响2.1 技能需求2.2 工作流程和角色的变化2.3 创新和业务驱动的数据分析 3.场景变化3.1 场景1:智能决策支持系统3.1.1 智能决策支持系统的架构设计3.1.2 Python代码演示…

Linux 常用命令----mktemp 命令

文章目录 基本用法实例演示高级用法注意事项 mktemp 命令用于创建一个临时文件或目录,这在需要处理临时数据或进行安全性测试时非常有用。使用 mktemp 可以保证文件名的唯一性,避免因文件名冲突而导致的问题。 基本用法 创建临时文件: 命令 mktemp 默认…

多表查询、事务、索引

目录 数据准备 分类 内连接 外连接 子查询 事务 四大特性 索引 数据准备 SQL脚本: #建议:创建新的数据库 create database db04; use db04;-- 部门表 create table tb_dept (id int unsigned primary key auto_increment comment 主键…

mysql:在字符串类型的列上创建索引,建议指定索引前缀长度

https://dev.mysql.com/doc/refman/8.2/en/create-index.html#create-index-column-prefixes 在字符串类型的列上创建索引,建议指定索引前缀长度,而没有必要用整个列来创建索引。因为用前面的字符创建索引,查询时并不会比在整列上创建索引慢很…

【玩转TableAgent数据智能分析】利用TableAgent进行教育数据分析

文章目录 前言九章云极(DataCanvas)介绍前期准备样例数据集体验1. 样例数据集-Airbnb民宿价格&评价 体验1.1 体验一1.2 体验二 教育数据的分析(TableAgent&ChatGLM对比)1. 上传文件2. 数据分析与对比2.1 分析一2.1.1 Tabl…

SuperMap iClient3D for Cesium 实现鼠标移动选中模型并显示模型对应字段

SuperMap iClient3D for cesium 实现鼠标移动选中模型并显示模型对应字段 一、实现思路二、数据制作1. 计算出模型中心点并保存到属性表中2. 计算出模型顶部高程3. 模型数据切缓存4. 发布三维服务. 三、代码编写 作者:xkf 一、实现思路 将模型属性数据存储到前端&a…

《Kotlin核心编程》笔记:面向对象

kotlin 中的类 // Kotlin中的一个类 class Bird {val weight: Double 500.0val color: String "blue"val age: Int 1fun fly() { } // 全局可见 }把上述代码反编译成Java的版本,然后分析它们具体的差异: public final class Bird {privat…

视觉学习笔记12——百度飞浆框架的PaddleOCR 安装、标注、训练以及测试

系列文章目录 虚拟环境部署 参考博客1 参考博客2 参考博客3 参考博客4 文章目录 系列文章目录一、简单介绍1.OCR介绍2.PaddleOCR介绍 二、安装1.anaconda基础环境1)anaconda的基本操作2)搭建飞浆的基础环境 2.安装paddlepaddle-gpu版本1)安装…

设计模式之建造者模式(二)

目录 概述概念角色类图适用场景 详述画小人业务类的介绍代码解析 建造者基本代码类介绍代码解析 总结设计原则其他 概述 概念 建造者模式是一种创建型设计模式,它可以将复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。 角色 …

@德人合科技——天锐绿盾|电脑文件防止泄密|文件、文档、图纸、源代码等透明加密保护,防泄密软件系统

德人合科技——天锐绿盾提供了一种企业办公电脑文件防止泄密的解决方案,该方案对文件、文档、设计图纸、源代码等进行了透明加密保护。 pc访问地址: https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 透明加密是一种保护文…

图文教程:从0开始安装stable-diffusion

现在AI绘画还是挺火,Midjourney虽然不错,但是对于我来说还是挺贵的。今天我就来安一下开源的AI绘画stable-diffusion,它的缺点就是对电脑的要求比较高,尤其是显卡。 话不多说开搞。 访问sd的github,https://github.com/AUTOMATIC…