大数据分析与内存计算——Spark安装以及Hadoop操作——注意事项

一、Spark安装

1.相关链接

https://dblab.xmu.edu.cn/blog/4322/

2.安装Spark(Local模式)

按照文章中的步骤安装即可

遇到问题:xshell以及xftp不能使用

解决办法:

在linux使用镜像网站进行下载:wget https://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-3.5.1/spark-3.5.1-bin-without-hadoop.tgz

二、编程实践

1.使用sbt对Scala独立应用程序进行编译打包

同样在Linux中使用wget下载sbt安装文件sbt-1.9.0.tgz:

wget https://github.com/sbt/sbt/releases/download/v1.9.0/sbt-1.9.0.tgz

注意:由于sbt没有国内镜像,下载较慢(大概两个小时)

2.其他按照上面教程中安装即可
3.实验报告要求:

读取HDFS系统文件"/user/hadoop/test.txt"(如果该文件不存在,请先创建)

(1)方法 1:使用 hadoop fs -put 命令上传本地文件

1).首先,你需要有一个本地文件,假设你有一个名为 local_test.txt 的本地文件,其中包含你想要写入 HDFS 的内容。

2).使用以下命令将本地文件上传到 HDFS:

如果你是集群,需要打开所有几点,再启动hadoop,否则报错(处于安全模式)

复制代码
hadoop fs -put /path/to/local_test.txt /user/data/test.txt

/path/to/local_test.txt 替换为你的本地文件的实际路径。

(2)方法 2:直接在 HDFS 上创建文件并写入内容

1).使用 hadoop fs -cat 命令直接在 HDFS 上创建文件并写入内容:

复制代码
hadoop fs -cat > /user/data/test.txt

这将创建一个名为 test.txt 的空文件。

2).现在你可以写入内容到这个文件中。输入你想要写入的内容,然后按 Ctrl+D 结束输入。

复制代码
This is the content of the test.txt file.

3).按 Ctrl+D 结束输入后,test.txt 文件将包含你刚刚输入的内容。

请注意,这些命令需要在 Hadoop 集群的节点上运行,或者你需要通过 SSH 登录到集群中的一个节点。如果你的 Hadoop 集群配置了 Web 界面(如 Hue 或 Ambari),你也可以通过 Web 界面来上传文件和查看文件内容。

4.通过如下代码将整个应用程序打包成 JAR(首次运行同样需要下载依赖包 ):
Scala 复制代码
/usr/local/sbt/sbt package

注意:这一步要保证你的Linux系统中所有文件夹名称为英文

5.建立一个名为 SimpleApp.scala 的文件

相关代码:

Scala 复制代码
/* SimpleApp.scala */
import org.apache.hadoop.fs.{FileSystem, Path}
import org.apache.hadoop.conf.Configuration

object SimpleApp {
  def main(args: Array[String]): Unit = {
    val conf = new Configuration()
    val fs = FileSystem.get(conf)
    val path = new Path("/user/data/test.txt")
    val isExists = fs.exists(path)

    if (!isExists) {

      val outputStream = fs.create(path)
      outputStream.close()
    }

    val inputStream = fs.open(path)
    val lineCount = scala.io.Source.fromInputStream(inputStream).getLines().size
    println(s"File line count: $lineCount")
    inputStream.close()
  }
}

注意:上述代码中的val path = new Path("/user/data/test.txt"),要替换为你的test.txt的路径

6.在simple.sbt中添加如下内容,声明该独立应用程序的信息以及与 Spark 的依赖关系:
Scala 复制代码
name := "Simple Project"
version := "1.0"
scalaVersion := "2.12.18"
libraryDependencies += "org.apache.hadoop" % "hadoop-client" % "2.10.1

注意:你的scala和hadoop版本要与代码中的相同

7.通过 spark-submit 运行程序

教程给的指令缺少文件编码格式,需要指定编码格式,以下为修改后的指令

Scala 复制代码
/usr/local/spark-3.5.1/bin/spark-submit --class "SimpleApp" --driver-java-options "-Dfile.encoding=UTF-8" ~/sparkapp/target/scala-2.12/simple-project_2.12-1.0.jar
Scala 复制代码
/usr/local/spark-3.5.1/bin/spark-submit --class "SimpleApp" --driver-java-options "-Dfile.encoding=UTF-8" ~/sparkapp/target/scala-2.12/simple-project_2.12-1.0.jar 2>&1 | grep "Lines with a:"

注意:需要更改你的spark安装路径

相关推荐
科技动态1 分钟前
BOE(京东方)重磅展出搭载自研TSF第四代发光技术产品,定义“高亮广色域”柔性显示新标杆
大数据
星川皆无恙8 分钟前
Transformer学习笔记:从 Attention 核心理论到机器翻译代码项目学习实战
大数据·pytorch·笔记·深度学习·神经网络·自然语言处理·transformer
2601_9553631515 分钟前
技术赋能B端拓客:号码核验行业的迭代与价值升级氪迹科技法人股东号码筛选系统,阶梯式价格
大数据·人工智能
志栋智能15 分钟前
超自动化巡检:构筑业务连续性的第一道智能防线
大数据·运维·网络·人工智能·自动化
Elastic 中国社区官方博客15 分钟前
使用 OpenTelemetry 和 Elastic 的 ML 和 AI Ops 可观测性
大数据·人工智能·elasticsearch·搜索引擎·全文检索
代码匠心7 小时前
从零开始学Flink:TopN 榜单
大数据·后端·flink·flink sql·大数据处理
张较瘦_8 小时前
软件工程 | 需求三层次:用正反对比例子,把复杂概念讲明白
大数据·软件工程
袋鼠云数栈9 小时前
集团数字化统战实战:统一数据门户与全业态监管体系构建
大数据·数据结构·人工智能·多模态
TechubNews10 小时前
Jack Dorsey:告别传统公司层级,借助 AI 走向智能体架构
大数据·人工智能
onebound_noah10 小时前
【实战教程】如何通过API快速获取淘宝/天猫商品评论数据(含多语言Demo)
大数据·数据库