建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
温馨提示

抱歉,您需设置社区昵称后才能参与社区互动!

前往修改
我再想想

青岛黄海学院智能云

话题 : 8 成员 : 234

加入HCSD

Spark技术课程实验2-Hadoop(伪分布式)和Spark(Local模式)安装和使用

行大运 2021/4/6 3168

    一、实验目的

(一)在单台电脑上按照“Hadoop(伪分布式)+SparkLocal模式)”方式完成HadoopSpark组合环境的搭建。

二、实验平台

Linux系统: Ubuntu 16.04

Hadoop: 2.7.1版本

JDK: 1.8以上版本

Spark: 2.4.0版本

三、实验内容和要求

(一)HadoopJDKvim编辑器的安装

1、下载hadoop-2.7.1.tarjdk-8u162-linux-x64.tar这两个软件。

2、创建hadoop用户

按“ctrl+alt+t”打开一个终端窗口,创建新用户:

$ sudo useradd -m hadoop -s /bin/bash

这条命令创建了可以登陆的hadoop用户,并使用/bin/bash作为shell

接着设置密码:

$ sudo passwd hadoop

hadoop用户增加管理员权限。

$ sudo adduser hadoop sudo

实验2-创建hadoop用户.jpg


然后注销当前用户,返回登陆界面,选择hadoop用户登陆。

3、更新apt及安装vim编辑器

后续会使用apt安装软件,需要更新一下apt

$ sudo apt-get update

后续需要更改一些配置文件,安装vim编辑器:

$ sudo apt-get install vim

实验2-更新apt及安装vim.jpg


4、安装SSH、配置SSH无密码登陆

单节点、集群模式都需要用到SSH登陆(类似于远程登陆,可以登陆某台Linux主机,并在上面运行命令),Ubuntu系统默认安装了SSH client,此外还需要安装SSH server

$ sudo apt-get install openssh-server

安装后,可以使用如下命令登陆本机:

$ ssh localhost

实验2-安装SSH、配置SSH无密码登陆-1.jpg


但是这样登陆是需要输入密码的,要配置成SSH无密码登陆比较方便。退出刚才的ssh,回到原先的终端窗口,利用ssh-keygen生成密钥,并将密钥加入到授权中:

$ exit

$ cd ~/.ssh/

$ ssh-keygen -t rsa

$ cat ./id_rsa.pub >> ./authorized_keys

实验2-安装SSH、配置SSH无密码登陆-2.jpg


5、安装Java环境

Windows系统中下载JDK1.8的安装包jdk-8u162-linux-x64.tar.gz,上传至Ubuntu系统的“/home/hadoop/下载/”目录下,在Linux命令行界面中,执行如下Shell命令:

$ cd /usr/lib

$ sudo mkdir jvm  #创建/usr/lib/jvm目录用来存放JDK文件

$ cd ~  #进入hadoop用户的主目录

$ cd 下载  #进入/home/hadoop/下载/目录下

$ sudo tar -zxvf ./jdk-8u162-linux-x64.tar.gz -C /usr/lib/jvm  #JDK文件解压到/usr/lib/jvm目录下

设置环境变量:

$ cd ~

$ vim ~/.bashrc

hadoop用户的环境变量配置文件中的开头位置,添加如下几行内容:

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

export PATH=${JAVA_HOME}/bin:$PATH

保存。bashrc文件并推出vim编辑器,执行如下命令让配置立即生效:

$ source ~/.bashrc

$ java -version  #查看是否安装成功

实验2-安装Java环境.jpg


    6、安装Hadoop

hadoop-2.7.1.tar.gz文件上传至Ubuntu系统,将其安装至/usr/local/中:

$ sudo tar -zxf ~/下载/hadoop-2.7.1.tar.gz -C /usr/local  #解压到/usr/local

$ cd /usr/local/

$ sudo mv ./hadoop-2.7.1/ ./hadoop  #将文件夹名改为hadoop

$ sudo chown -R hadoop ./hadoop  #修改文件权限

$ cd /usr/local/hadoop

$ ./bin/hadoop version  #显示Hadoop版本信息,检查其是否可用

实验2-安装Hadoop.jpg


    (二)Hadoop伪分布式模式配置

Hadoop可以在单节点上以伪分布式的方式运行,Hadoop进程以分离的Java 进程来运行,节点既作为NameNode 也作为DataNode,同时,读取的是HDFS 中的文件。

Hadoop的配置文件位于/usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个配置文件core-site.xmlhdfs-site.xmlHadoop的配置文件是xml 格式,每个配置以声明propertynamevalue的方式来实现。

修改配置文件core-site.xml

<configuration>

    <property>

        <name>hadoop.tmp.dir</name>

        <value>file:/usr/local/hadoop/tmp</value>

        <description>Abase for other temporary directories.</description>

    </property>

    <property>

        <name>fs.defaultFS</name>

        <value>hdfs://localhost:9000</value>

    </property>

</configuration>

修改配置文件hdfs-site.xml

<configuration>

    <property>

        <name>dfs.replication</name>

        <value>1</value>

    </property>

    <property>

        <name>dfs.namenode.name.dir</name>

        <value>file:/usr/local/hadoop/tmp/dfs/name</value>

    </property>

    <property>

        <name>dfs.datanode.data.dir</name>

        <value>file:/usr/local/hadoop/tmp/dfs/data</value>

    </property>

</configuration>

配置完成后,执行NameNode格式化:

$ cd /usr/local/hadoop

$ ./bin/hdfs namenode -format

    成功的话,会看到 “successfully formatted” “Exitting with status 0” 的提示,若为 “Exitting with status 1” 则是出错。

    接着开启 NameNode DataNode 守护进程。若出现如下SSH提示,输入yes即可。

$ ./sbin/start-dfs.sh

    启动完成后,通过命令 jps 来判断是否成功启动,若成功启动则会列出如下进程: “NameNode””DataNode” “SecondaryNameNode”

实验2-Hadoop伪分布式配置-1.jpg


    成功启动后,可以在Ubuntu系统中访问Web界面http://localhost:50070查看NameNode Datanode信息,还可以在线查看 HDFS 中的文件。

实验2-Hadoop伪分布式配置-2.jpg


(三)运行Hadoop伪分布式实例

伪分布式读取的则是HDFS上的数据,要使用HDFS,首先需要在HDFS中创建用户目录:

$ ./bin/hdfs dfs -mkdir -p /user/hadoop

    接着将./etc/hadoop中的xml文件作为输入文件复制到分布式文件系统中,即将/usr/local/hadoop/etc/hadoop复制到分布式文件系统中的/user/hadoop/input中。我们使用的是hadoop用户,并且已创建相应的用户目录/user/hadoop,因此在命令中就可以使用相对路径如input,其对应的绝对路径就是/user/hadoop/input:

$ ./bin/hdfs dfs -mkdir input

$ ./bin/hdfs dfs -put ./etc/hadoop/*.xml input

复制完成后,可以通过如下命令查看文件列表:

$ ./bin/hdfs dfs -ls input

若要关闭Hadoop,则运行:

$ ./sbin/stop-dfs.sh

实验2-运行Hadoop伪分布式实例.jpg


(四)安装Spark

1、下载spark-2.4.0-bin-without-hadoop.tgz并上传至Ubuntu系统的“/home/hadoop/下载”目录下。

2、对文件进行解压,存放在“/usr/local/”目录下:

$ sudo tar -zxf ~/下载/spark-2.4.0-bin-without-hadoop.tgz -C /usr/local/

$ cd /usr/local

$ sudo mv ./spark-2.4.0-bin-without-hadoop ./spark  #修改文件夹名

$ sudo chown -R hadoop:hadoop ./spark  #hadoop用户中/usr/local/hadoop目录夹中权限赋予/usr/local/spark

3、配置相关文件

修改spark-env.sh文件

$ cd /usr/local/spark

$ cp ./conf/spark-env.sh.template ./conf/spark-env.sh

使用vim编辑器编辑spark-env.sh文件,在该文件第一行添加以下配置信息:

export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)

配置信息后,Spark可以把数据存储到HDFS中,也可从HDFS中读取数据。

检查并修改.bashrc文件

$ vim ./bashrc

检查并修改为如下内容:

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

export PATH=$PATH:${JAVA_HOME}/bin:/usr/local/hbase/bin

export HADOOP_HOME=/usr/local/hadoop

export SPARK_HOME=/usr/local/spark

export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.7-src.zip:$PYTHONPATH

export PYSPARK_PYTHON=python3

export PATH=$HADOOP_HOME/bin:$SPARK_HOME/bin:$PATH

    上述设置中,PYTHONPATH环境变量主要是为了在python3中引入pyspark库,PYSPARK_PYTHON变量主要用于设置pyspark运行的Python版本。需要注意的是,py4j-0.10.7-src.zip文件名必须与“/usr/local/spark/python/lib”目录下保持一致。

执行如下代码让环境变量生效:

$ source ~/.bashrc

4、验证Spark是否安装成功

$ cd /usr/local/spark

$ ./bin/run-example SparkPi 2>&1 | grep “Pi is roughly”

实验2-安装spark-验证spark.jpg


5SparkHadoop的交互

完成以上步骤以后,就在单台机器上按照“Hadoop(伪分布式)+SparkLocal模式)”这种方式完成了HadoopSpark组合环境的搭建。HadoopSpark可以相互协作,由HadoopHDFSHBase等组件负责数据的存储和管理,由Spark负责数据的计算。

    为了能够让Spark操作HDFS中的数据,需要先启动HDFS;通过命令jps来判断是否成功启动,若成功启动,会列出如下进程:NameNodeDataNodeSecondaryNameNode,然后,Spark就可以对HDFS中的数据进行读取或写入操作;使用结束后关闭HDFS

实验2-安装spark-spark和hadoop的交互.jpg


(五)在pyspark中运行代码

    执行pyspark命令,可以启动进入Python版本的Spark交互式执行环境,不带任何参数时,默认使用Local模式。

实验2-安装spark-启动pyspark.jpg


    (六)开发Spark独立应用程序

Ubuntu系统中打开一个Linux终端,使用vim编辑器新建一个代码文件“/usr/local/spark/mycode/python/WordCount.py”,具体内容如下:

from pyspark import SparkConf,SparkContext

conf = SparkConf().setMaster(“local”).setAppName(“My App”)

sc = SparkContext(conf = conf)

logFile = “file:///usr/local/spark/README.md”

logData = sc.textFile(logFile,2).cache()

numAs = logData.filter(lambda line: ‘a’ in line).count()

numBs = logData.filter(lambda line: ‘b’ in line).count()

print(‘Lines with a: %s, Lines with b: %s’ % (numAs,numBs))

使用如下命令执行:

$ cd /usr/local/spark/mycode/python

$ python3 WordCount.py

也可以通过spark-submit提交到Spark中运行,命令如下:

$ /usr/local/spark/bin/spark-submit /usr/local/spark/mycode/python/WordCount.py

实验2-开发Spark独立应用程序.jpg



回复 (1)

2021/4/16 13:32

注意实践过程中需要注意所有符号应为英文标点符号。

行大运

2021-4-19 09:04

非常好
... 展开
上划加载中
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消

行大运

角色:校园大使

话题:8

发消息
更新于2021年04月19日 16:24:36 31681
直达本楼层的链接
楼主
倒序浏览 只看该作者
Spark技术课程实验2-Hadoop(伪分布式)和Spark(Local模式)安装和使用

    一、实验目的

(一)在单台电脑上按照“Hadoop(伪分布式)+SparkLocal模式)”方式完成HadoopSpark组合环境的搭建。

二、实验平台

Linux系统: Ubuntu 16.04

Hadoop: 2.7.1版本

JDK: 1.8以上版本

Spark: 2.4.0版本

三、实验内容和要求

(一)HadoopJDKvim编辑器的安装

1、下载hadoop-2.7.1.tarjdk-8u162-linux-x64.tar这两个软件。

2、创建hadoop用户

按“ctrl+alt+t”打开一个终端窗口,创建新用户:

$ sudo useradd -m hadoop -s /bin/bash

这条命令创建了可以登陆的hadoop用户,并使用/bin/bash作为shell

接着设置密码:

$ sudo passwd hadoop

hadoop用户增加管理员权限。

$ sudo adduser hadoop sudo

实验2-创建hadoop用户.jpg


然后注销当前用户,返回登陆界面,选择hadoop用户登陆。

3、更新apt及安装vim编辑器

后续会使用apt安装软件,需要更新一下apt

$ sudo apt-get update

后续需要更改一些配置文件,安装vim编辑器:

$ sudo apt-get install vim

实验2-更新apt及安装vim.jpg


4、安装SSH、配置SSH无密码登陆

单节点、集群模式都需要用到SSH登陆(类似于远程登陆,可以登陆某台Linux主机,并在上面运行命令),Ubuntu系统默认安装了SSH client,此外还需要安装SSH server

$ sudo apt-get install openssh-server

安装后,可以使用如下命令登陆本机:

$ ssh localhost

实验2-安装SSH、配置SSH无密码登陆-1.jpg


但是这样登陆是需要输入密码的,要配置成SSH无密码登陆比较方便。退出刚才的ssh,回到原先的终端窗口,利用ssh-keygen生成密钥,并将密钥加入到授权中:

$ exit

$ cd ~/.ssh/

$ ssh-keygen -t rsa

$ cat ./id_rsa.pub >> ./authorized_keys

实验2-安装SSH、配置SSH无密码登陆-2.jpg


5、安装Java环境

Windows系统中下载JDK1.8的安装包jdk-8u162-linux-x64.tar.gz,上传至Ubuntu系统的“/home/hadoop/下载/”目录下,在Linux命令行界面中,执行如下Shell命令:

$ cd /usr/lib

$ sudo mkdir jvm  #创建/usr/lib/jvm目录用来存放JDK文件

$ cd ~  #进入hadoop用户的主目录

$ cd 下载  #进入/home/hadoop/下载/目录下

$ sudo tar -zxvf ./jdk-8u162-linux-x64.tar.gz -C /usr/lib/jvm  #JDK文件解压到/usr/lib/jvm目录下

设置环境变量:

$ cd ~

$ vim ~/.bashrc

hadoop用户的环境变量配置文件中的开头位置,添加如下几行内容:

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

export PATH=${JAVA_HOME}/bin:$PATH

保存。bashrc文件并推出vim编辑器,执行如下命令让配置立即生效:

$ source ~/.bashrc

$ java -version  #查看是否安装成功

实验2-安装Java环境.jpg


    6、安装Hadoop

hadoop-2.7.1.tar.gz文件上传至Ubuntu系统,将其安装至/usr/local/中:

$ sudo tar -zxf ~/下载/hadoop-2.7.1.tar.gz -C /usr/local  #解压到/usr/local

$ cd /usr/local/

$ sudo mv ./hadoop-2.7.1/ ./hadoop  #将文件夹名改为hadoop

$ sudo chown -R hadoop ./hadoop  #修改文件权限

$ cd /usr/local/hadoop

$ ./bin/hadoop version  #显示Hadoop版本信息,检查其是否可用

实验2-安装Hadoop.jpg


    (二)Hadoop伪分布式模式配置

Hadoop可以在单节点上以伪分布式的方式运行,Hadoop进程以分离的Java 进程来运行,节点既作为NameNode 也作为DataNode,同时,读取的是HDFS 中的文件。

Hadoop的配置文件位于/usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个配置文件core-site.xmlhdfs-site.xmlHadoop的配置文件是xml 格式,每个配置以声明propertynamevalue的方式来实现。

修改配置文件core-site.xml

<configuration>

    <property>

        <name>hadoop.tmp.dir</name>

        <value>file:/usr/local/hadoop/tmp</value>

        <description>Abase for other temporary directories.</description>

    </property>

    <property>

        <name>fs.defaultFS</name>

        <value>hdfs://localhost:9000</value>

    </property>

</configuration>

修改配置文件hdfs-site.xml

<configuration>

    <property>

        <name>dfs.replication</name>

        <value>1</value>

    </property>

    <property>

        <name>dfs.namenode.name.dir</name>

        <value>file:/usr/local/hadoop/tmp/dfs/name</value>

    </property>

    <property>

        <name>dfs.datanode.data.dir</name>

        <value>file:/usr/local/hadoop/tmp/dfs/data</value>

    </property>

</configuration>

配置完成后,执行NameNode格式化:

$ cd /usr/local/hadoop

$ ./bin/hdfs namenode -format

    成功的话,会看到 “successfully formatted” “Exitting with status 0” 的提示,若为 “Exitting with status 1” 则是出错。

    接着开启 NameNode DataNode 守护进程。若出现如下SSH提示,输入yes即可。

$ ./sbin/start-dfs.sh

    启动完成后,通过命令 jps 来判断是否成功启动,若成功启动则会列出如下进程: “NameNode””DataNode” “SecondaryNameNode”

实验2-Hadoop伪分布式配置-1.jpg


    成功启动后,可以在Ubuntu系统中访问Web界面http://localhost:50070查看NameNode Datanode信息,还可以在线查看 HDFS 中的文件。

实验2-Hadoop伪分布式配置-2.jpg


(三)运行Hadoop伪分布式实例

伪分布式读取的则是HDFS上的数据,要使用HDFS,首先需要在HDFS中创建用户目录:

$ ./bin/hdfs dfs -mkdir -p /user/hadoop

    接着将./etc/hadoop中的xml文件作为输入文件复制到分布式文件系统中,即将/usr/local/hadoop/etc/hadoop复制到分布式文件系统中的/user/hadoop/input中。我们使用的是hadoop用户,并且已创建相应的用户目录/user/hadoop,因此在命令中就可以使用相对路径如input,其对应的绝对路径就是/user/hadoop/input:

$ ./bin/hdfs dfs -mkdir input

$ ./bin/hdfs dfs -put ./etc/hadoop/*.xml input

复制完成后,可以通过如下命令查看文件列表:

$ ./bin/hdfs dfs -ls input

若要关闭Hadoop,则运行:

$ ./sbin/stop-dfs.sh

实验2-运行Hadoop伪分布式实例.jpg


(四)安装Spark

1、下载spark-2.4.0-bin-without-hadoop.tgz并上传至Ubuntu系统的“/home/hadoop/下载”目录下。

2、对文件进行解压,存放在“/usr/local/”目录下:

$ sudo tar -zxf ~/下载/spark-2.4.0-bin-without-hadoop.tgz -C /usr/local/

$ cd /usr/local

$ sudo mv ./spark-2.4.0-bin-without-hadoop ./spark  #修改文件夹名

$ sudo chown -R hadoop:hadoop ./spark  #hadoop用户中/usr/local/hadoop目录夹中权限赋予/usr/local/spark

3、配置相关文件

修改spark-env.sh文件

$ cd /usr/local/spark

$ cp ./conf/spark-env.sh.template ./conf/spark-env.sh

使用vim编辑器编辑spark-env.sh文件,在该文件第一行添加以下配置信息:

export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)

配置信息后,Spark可以把数据存储到HDFS中,也可从HDFS中读取数据。

检查并修改.bashrc文件

$ vim ./bashrc

检查并修改为如下内容:

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

export PATH=$PATH:${JAVA_HOME}/bin:/usr/local/hbase/bin

export HADOOP_HOME=/usr/local/hadoop

export SPARK_HOME=/usr/local/spark

export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.7-src.zip:$PYTHONPATH

export PYSPARK_PYTHON=python3

export PATH=$HADOOP_HOME/bin:$SPARK_HOME/bin:$PATH

    上述设置中,PYTHONPATH环境变量主要是为了在python3中引入pyspark库,PYSPARK_PYTHON变量主要用于设置pyspark运行的Python版本。需要注意的是,py4j-0.10.7-src.zip文件名必须与“/usr/local/spark/python/lib”目录下保持一致。

执行如下代码让环境变量生效:

$ source ~/.bashrc

4、验证Spark是否安装成功

$ cd /usr/local/spark

$ ./bin/run-example SparkPi 2>&1 | grep “Pi is roughly”

实验2-安装spark-验证spark.jpg


5SparkHadoop的交互

完成以上步骤以后,就在单台机器上按照“Hadoop(伪分布式)+SparkLocal模式)”这种方式完成了HadoopSpark组合环境的搭建。HadoopSpark可以相互协作,由HadoopHDFSHBase等组件负责数据的存储和管理,由Spark负责数据的计算。

    为了能够让Spark操作HDFS中的数据,需要先启动HDFS;通过命令jps来判断是否成功启动,若成功启动,会列出如下进程:NameNodeDataNodeSecondaryNameNode,然后,Spark就可以对HDFS中的数据进行读取或写入操作;使用结束后关闭HDFS

实验2-安装spark-spark和hadoop的交互.jpg


(五)在pyspark中运行代码

    执行pyspark命令,可以启动进入Python版本的Spark交互式执行环境,不带任何参数时,默认使用Local模式。

实验2-安装spark-启动pyspark.jpg


    (六)开发Spark独立应用程序

Ubuntu系统中打开一个Linux终端,使用vim编辑器新建一个代码文件“/usr/local/spark/mycode/python/WordCount.py”,具体内容如下:

from pyspark import SparkConf,SparkContext

conf = SparkConf().setMaster(“local”).setAppName(“My App”)

sc = SparkContext(conf = conf)

logFile = “file:///usr/local/spark/README.md”

logData = sc.textFile(logFile,2).cache()

numAs = logData.filter(lambda line: ‘a’ in line).count()

numBs = logData.filter(lambda line: ‘b’ in line).count()

print(‘Lines with a: %s, Lines with b: %s’ % (numAs,numBs))

使用如下命令执行:

$ cd /usr/local/spark/mycode/python

$ python3 WordCount.py

也可以通过spark-submit提交到Spark中运行,命令如下:

$ /usr/local/spark/bin/spark-submit /usr/local/spark/mycode/python/WordCount.py

实验2-开发Spark独立应用程序.jpg



点赞 举报
分享

分享文章到朋友圈

分享文章到微博

河婆镇酉告狗

角色:成员

话题:0

发消息
发表于2021年04月16日 13:32:54
直达本楼层的链接
沙发
只看该作者

注意实践过程中需要注意所有符号应为英文标点符号。

评论
行大运 2021-4-19 09:04 评论

非常好

... 查看全部
点赞2 评论 引用 举报

游客

您需要登录后才可以回帖 登录 | 立即注册