实验2 Spark和Hadoop的安装
实验目的
- 掌握在Linux虚拟机中安装Hadoop和Spark的方法。
- 熟悉HDFS的基本使用方法。
- 掌握使用Spark访问本地文件和HDFS文件的方法。
实验平台
Ubuntu18.04
Spark2.4.0
Hadoop2.7.7
Python3.6.9
1、安装Hadoop和Spark
- 零基础:参考林子雨《Spark编程基础》网站实验指南
- 已入门:鄙人博客Spark伪分布式安装大全,快速搭建(我绝对没有打广告!)
2、HDFS常用操作
- 启动Hadoop,在HDFS中创建用户目录/user/hadoop(*-site.xml是这么写的)
$ cd /usr/local/hadoop
$ rm -rf tmp/
$ hdfs namenode -format
$ sbin/start-dfs.sh
# hadoop:50070
$ hdfs dfs -mkdir -p /usr/hadoop
# HDFS的web端出现/usr/hadoop
# 啊创错了
$ hdfs dfs -mkdir -p /user/hadoop
$ hdfs dfs -rm -r /usr
$ hdfs dfs -ls /
# 没有输出
- Linux系统的本地文件系统的/home/hadoop目录下新建一个文本文件test.txt,随便写点,然后上传到HDFS的/user/hadoop目录下
$ cd
$ vim test.txt
$ hdfs dfs -put test.txt /user/hadoop/
$ hdfs dfs -ls /user/hadoop/ # 有
- 把HDFS中/user/hadoop目录下的test.txt文件,下载到Linux系统的本地文件系统中的/home/hadoop/下载目录下
$ hdfs dfs -get test.txt ~/下载
$ cd ~/下载
$ ls # 有
- 将HDFS中/user/hadoop目录下的test.txt文件的内容输出到终端中进行显示
$ hdfs dfs -cat test.txt
Hello Hadoop
Hello HDFS
Hadoop is good
HDFS is nice
- 在HDFS中的/user/hadoop目录下,创建子目录input,把HDFS中/user/hadoop目录下的test.txt,复制到/user/hadoop/input目录下
$ hdfs dfs -mkdir input
$ hdfs dfs -cp test.txt input/
$ hdfs dfs -ls input/
Found 1 items
-rw-r--r-- 1 hadoop supergroup 52 2021-11-26 11:13 input/test.txt
$ hdfs dfs -ls /user/hadoop/
Found 2 items
drwxr-xr-x - hadoop supergroup 0 2021-11-26 11:13 /user/hadoop/input
-rw-r--r-- 1 hadoop supergroup 52 2021-11-26 11:04 /user/hadoop/test.txt
- 删除HDFS中/user/hadoop目录下的test.txt文件,删除HDFS中/user/hadoop目录下的input子目录及其子目录下的所有内容
$ hdfs dfs -rm test.txt
21/11/26 11:15:46 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
Deleted test.txt
$ hdfs dfs -ls ./
Found 1 items
drwxr-xr-x - hadoop supergroup 0 2021-11-26 11:13 input
$ hdfs dfs -rm -r input/
21/11/26 11:16:39 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
Deleted input
$ hdfs dfs -ls ./
# 无输出
3、Spark读取文件系统的数据
- 在pyspark中读取Linux系统本地文件/home/hadoop/test.txt,然后统计出文件的行数
>>> localFile = sc.textFile("file:///home/hadoop/test.txt")
>>> localFile.count()
3
- 在pyspark中读取HDFS系统文件/user/hadoop/test.txt,统计出文件的行数
>>> hdfsFile = sc.textFile("test.txt")
# hdfsFile = sc.textFile("/user/hadoop/test.txt")
# hdfsFile = sc.textFile("hdfs://hadoop:9000/user/hadoop/test.txt")
>>> hdfsFile.count()
3
- 编写独立应用程序,读取HDFS系统文件/user/hadoop/test.txt,然后,统计出文件的行数;通过spark-submit提交到Spark中运行程序
$ vim test.py
from pyspark import SparkConf, SparkContext
conf = SparkConf().setMaster("local").setAppName("Count")
sc = SparkContext(conf = conf)
myFile = sc.textFile("hdfs://hadoop:9000/user/hadoop/test.txt")
myFile.count()
$ cd /usr/local/spark
$ ./bin/spark-submit ~/test.py