- 1.scala安装
- 安装 Spark
- Spark shell 编程
步骤一:解压 Scala 压缩文件并重命名
[wangheng02@master ~]# tar -zxvf /opt/software/scala-2.11.8.tgz -C /usr/local/src/
[wangheng02@master ~]# mv /usr/local/src/scala-2.11.8/ /usr/local/src/scala
分发scala到子节点
[wangheng02@master ~]# scp -r /usr/local/src/scala/ root@slave1:/usr/local/src/
[wangheng02@master ~]# scp -r /usr/local/src/scala/ root@slave2:/usr/local/src/
步骤二: 修改 scala 目录的用户权限
[wangheng02@master src]$ chown -R wangheng02.wangheng02 scala/
步骤三: 配置环境变量
[wangheng02@master ~]# vim /etc/profile
[wangheng02@slave1 ~]# vim/etc/profile
[wangheng02@slave2 ~]# vim /etc/profile
然后在键盘输入字母“i”或者“o”进入编辑模式,
export SCALA_HOME=/usr/local/src/scala
export PATH=
P
A
T
H
:
PATH:
PATH:SCALA_HOME/bin
然后在键盘按“Esc”键退出编辑模式,并键盘输入“:wq”进行内容保存并退出,最后将该
“.bashrc”文件生效即可完成 scala 的环境配置。
切换到自己用户下
生效环境变量
[wangheng02@master root]$ source /etc/profile
步骤四: 验证 Scala 安装是否成功
如果配置了步骤三中的环境变量,可以直接在任意路径输入命令“scala -version”即可,
但是,整个实验中我们都是使用的绝对路径,所以,完成 scala 验证的命令为:
[wangheng02@master ~]$ cd /usr/local/scr/scala/bin
即可进入 bin 目录
输入 scala 进入 scala shell 交互编程界面:
[wangheng02@master bin]$ scala
scala>
然后退出 scala shell 的命令为:
scala>:quit
就可以退出 scala shell 交互编程界面。
任务一:在 master 节点上安装 spark
步骤一:在 master 主节点上解压 Spark 安装包
[root@master ~]# tar -xzvf /opt/software/spark-2.4.7-bin-hadoop2.7.tgz -C /usr/local/src/
步骤二:修改 spark 目录的用户权限
[root@master ~]# chown -R wangheng02.wangheng02 /usr/local/src/spark-2.4.7-bin-hadoop2.7/
步骤三:Spark 解压后的重命名操作
[root@master ~]# mv /usr/local/src/spark-2.4.7-bin-hadoop2.7/ spark
步骤四:配置环境变量
[root@master ~]# vim /etc/profile
然后在键盘输入字母“i”或者“o”进入编辑模式,在文件中加入如下内容:
export SPARK_HOME=/usr/local/src/spark
export PATH=
P
A
T
H
:
PATH:
PATH:SPARK_HOME/bin:$PATH
并在键盘输入“:wq”进行内容保存并退出,最后将修改过的“.bashrc”文件生效,命
令为:
[root@master ~]# su wangheng02
[wangheng02@master root]$ source /etc/profile
任务二:修改 Spark 参数
步骤一:修改 spark-env.sh
进入 Spark 的配置文件目录“conf”:
[wangheng02@master root]$ cd /usr/local/src/spark/conf/
将已有的文件“spark-env.sh.template”复制出来并命名为 spark-evn.sh:
[hadoop@master conf]$ cp /usr/local/src/spark/conf/spark-env.sh.template /usr/local/src/spark/conf/spark-env.sh
[hadoop@master conf]$ vim /usr/local/src/spark/conf/spark-env.sh
然后将下面所示内容加入到文件“spark-env.sh”中:
export JAVA_HOME=/usr/local/src/java
export HADOOP_HOME=/usr/local/src/hadoop
export SCALA_HOME=/usr/local/src/scala
export SPARK_MASTER_IP=master
export SPARK_MASTER_PORT=7077
export SPARK_DIST_CLASSPATH=$(/usr/local/src/hadoop/bin/hadoop classpath)
export HADOOP_CONF_DIR=/usr/local/src/hadoop/etc/hadoop
export SPARK_YARN_USER_ENV=“CLASSPATH=/usr/local/src/hadoop/etc/hadoop”
export YARN_CONF_DIR=/usr/local/src/hadoop/etc/hadoop
步骤二:配置 slaves 文件
在 master 节点上安装好后,需建立 master 节点与 slave1 和 slave2 节点的链接关系,所
以需将 spark 中的 conf 目录下的 slaves.template 文件重命名为 slaves
[wangheng02@master conf]$ cp /usr/local/src/spark/conf/slaves.template /usr/local/src/spark/conf/slaves
然后通过 vi 编辑器进入 slaves 文件
[wangheng02@master conf]$ vim slaves
其中,master、slave1、slave2 分别为主节点名和两从节点名
任务三:在两个 slaves 从节点上安装 Spark
步骤一:将 master 主节点上的 Spark 安装目录和.bashrc 环境变量复制到两个 slaves 从节点上
[wangheng02@master conf]$ scp -r /usr/local/src/spark/ @slave1:/usr/local/src/
[wangheng02@master conf]$ scp -r /usr/local/src/spark/ @slave2:/usr/local/src/
[wangheng02@master conf]$ scp /etc/profile root@slave1:/etc/
[wangheng02@master conf]$ scp /etc/profile root@slave2:/etc/
切换到slave1,slave2,生效环境变量
[wangheng02@slave1 ~]$ source /etc/profile
[wangheng02@slave2 ~]$ source /etc/profile
任务四:运行示例
步骤一:启动 Hadoop 集群
[wangheng02@master ~]$ zkServer.sh start
[wangheng02@slave1 ~]$ zkServer.sh start
[wangheng02@slave2 ~]$ zkServer.sh start
[hadoop@master spark]$ cd /usr/local/src/hadoop/sbin/
[hadoop@master sbin]$ ./start-all.sh
步骤二:以集群模式运行 SparkPi 实例程序
在 master 节点上启动 SparkPi 实例程序,如下所示:
[wangheng02@master sbin]$ cd /usr/local/src/spark/
切换到hadoop下配置文件 yarn-site.xml
[wangheng02@master spark]$ ./bin/spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode client --driver-memory 512M --executor-memory 512M --executor-cores 1 examples/jars/spark-examples_2.11-2.4.7.jar 40
Spark shell 编程任务一:在 Yarn 集群管理器上运行 spark-shell
[wangheng02@master spark]$ cd /usr/local/src/spark/bin/
[wangheng02@master bin]$ ./spark-shell --master yarn --deploy-mode client
任务二:在 spark-shell 上运行一个 WordCount 案例
步骤一:通过加载文件新建一个 RDD
[wangheng02@master ~]$ cd /usr/local/src/spark
[wangheng02@master spark]$ hdfs dfs -put README.md /
通过加载 README.md 文件新建一个 RDD:
scala> val textFile=sc.textFile("/README.md")
步骤二:对 RDD 进行 actions 和 transformations 操作
下面我们就来演示 actions 动作操作中的 first()和 count()两个操作,如下所示
scala> textFile.first() #查看 textFile 中的第一条数据
scala> textFile.count() #统计 textFile 中的单词总数
接着演示 transformations 转换操作,运行代码如下所示:
scala> val wordcount=textFile.flatMap(line=>line.split(",")).map(word=>(word,1)).reduceByKey(+)
其中,reduceByKey(+)是 reduceByKey((x,y)=>x+y)的简化写法,同样是寻找相同
key 的数据,当找到这样的两条记录时会对其 value 求和,只是不指定将两个 value 存入 x
和 y 中,同样只保留求和之后的数据作为 value。反复执行这个操作直至每个 key 只留下
一条记录。以上四种方式等价。然后通过 collect 操作将远程数据通过网络传输到本地进行
词频统计:
scala> wordcount.collect()
collect()方法得到的结果是一个 list,然后可以通过 foreach()方法遍历 list 中的每一个
元组数据并返回其结果,如下所示:
scala> wordcount.collect().foreach(println)
注意:在 spark shell 交互式编程环境下,如果代码一行放不下,可以在圆点后回车,
在下一行继续输入
结束之后退出 spark-shell
scala>:q



