安装部署Spark集群以及运行WordCount详细步骤

1.在安装Spark之,确保 Hadoop 已经成功安装,并且 Hadoop 已经正常启动。 Hadoop 正常启动的验证过程如下:

(1) 使用下面的命令,看可否正常显示 HDFS 上的目录列表

# hdfs dfs -ls /

安装部署Spark集群以及运行WordCount详细步骤_第1张图片

 

(2) 使用浏览器查看相应界面

输入网址:http://192.168.222.100:50070/

安装部署Spark集群以及运行WordCount详细步骤_第2张图片

 

输入网址:http://192.168.222.100:18088/

安装部署Spark集群以及运行WordCount详细步骤_第3张图片

        该页面的结果跟 Hadoop 安装部分浏览器展示结果一致。如果满足上面的两个条件,表示 Hadoop 正常启动。

        HBase 需要部署在 HadoopMaster 和 HadoopSlave 上。下面的操作都是通过 HadoopMaster 节点进行。

解压并安装 Spark

注意:本文档使用的 spark 是 1.2.0 版本,实际培训时可能会改变,在进行操作时,请替换成实际的版本。 使用下面的命令,解压 Spark 安装包:

Spark安装包的权限设置

安装部署Spark集群以及运行WordCount详细步骤_第4张图片

 

解压Spark安装包,

安装部署Spark集群以及运行WordCount详细步骤_第5张图片

安装部署Spark集群以及运行WordCount详细步骤_第6张图片

 

重命名Spark安装包,

安装部署Spark集群以及运行WordCount详细步骤_第7张图片

 

配置spark的系统环境变量信息,Yarn 上运行 Spark 需要配置 HADOOP_CONF_DIRYARN_CONF_DIR HDFS_CONF_DIR 环境变量命令:

# vi /etc/profile        (配置信息如下图)

安装部署Spark集群以及运行WordCount详细步骤_第8张图片

export JAVA_HOME=/home/software/jdk

export HADOOP_HOME=/home/software/hadoop

export HBASE_HOME=/home/software/hbase

export HADOOP_CLASSPATH=$HBASE_HOME/lib/*

export SPARK_HOME=/home/software/spark

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

export HDFS_CONF_DIR=$HADOOP_HOME/etc/hadoop

export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop

export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin:$SPARK_HOME/bin

使环境变量信息生效,

 

验证 Spark 安装,执行下面的命令(这是 1 行代码):

# spark-submit --class org.apache.spark.examples.SparkPi --master yarn-cluster --num-executors 3 --driver-memory 1g --executor-memory 1g --executor-cores 1 /home/software/spark/lib/spark-examples*.jar 10

安装部署Spark集群以及运行WordCount详细步骤_第9张图片

 

查看执行结果,在计算节点上(slave节点)。执行下面代码:

安装部署Spark集群以及运行WordCount详细步骤_第10张图片

 

Spark-WordCount实例

10.创建Hadoop项目,

在eclipse中点击File--->new--->other,会弹出对话框:

安装部署Spark集群以及运行WordCount详细步骤_第11张图片

 

然后找到,Map/Reduce文件夹,然后选择Map/Reduce Project。

安装部署Spark集群以及运行WordCount详细步骤_第12张图片

 

点击下一步,然后输入Spark-WordCount,并点击完成。

安装部署Spark集群以及运行WordCount详细步骤_第13张图片

在eclipse工程列表中会出现Spark-WordCount项目,

安装部署Spark集群以及运行WordCount详细步骤_第14张图片

 

创建类,

打开Spark-WordCount目录,右键点击src文件夹,选择new--->Class

安装部署Spark集群以及运行WordCount详细步骤_第15张图片

 

填写类名:WordCount,点击finish。

安装部署Spark集群以及运行WordCount详细步骤_第16张图片

 

工程目录下会出现Spark_WordCount的java文件。

安装部署Spark集群以及运行WordCount详细步骤_第17张图片

 

双击WordCount.java文件,把代码拷贝进去。

安装部署Spark集群以及运行WordCount详细步骤_第18张图片

 

import java.util.Arrays;

import org.apache.spark.SparkConf;

import org.apache.spark.api.java.JavaPairRDD;

import org.apache.spark.api.java.JavaRDD;

import org.apache.spark.api.java.JavaSparkContext;

import org.apache.spark.api.java.function.FlatMapFunction;

import org.apache.spark.api.java.function.Function2;

import org.apache.spark.api.java.function.PairFunction;

import org.apache.spark.api.java.function.VoidFunction;

import scala.Tuple2;

public class Spark_WordCount {

    public static void main(String[] args) {

        

        /**

         * 1、创建SparkConf对象,设置Spark应用程序的配置信息

         */

        SparkConf conf = new SparkConf().setAppName(Spark_WordCount.class.getSimpleName());

                //设置Spark应用程序的名称

        conf.setMaster("local[*]");

                

 /**

         * 2、创建SparkContext对象,Java开发使用JavaSparkContext;Scala开发使用SparkContext

         * 在Spark中,SparkContext负责连接Spark集群,创建RDD、累积量和广播量等。

         * Master参数是为了创建TaskSchedule(较低级的调度器,高层次的调度器为DAGSchedule),如下:

         *         如果setMaster("local")则创建LocalSchedule;

         *         如果setMaster("spark")则创建SparkDeploySchedulerBackend。在SparkDeploySchedulerBackend的start函数,会启动一个Client对象,连接到Spark集群。

         */

        JavaSparkContext sc = new JavaSparkContext(conf);

        

        /**

         * 3、sc中提供了textFile方法是SparkContext中定义的,如下:

         *         def textFile(path: String): JavaRDD[String] = sc.textFile(path)    

         * 用来读取HDFS上的文本文件、集群中节点的本地文本文件或任何支持Hadoop的文件系统上的文本文件,它的返回值是JavaRDD[String],是文本文件每一行

         */

        JavaRDD lines = sc.textFile("hdfs://master:9000/spark-input.txt");

        /**

         * 4、将行文本内容拆分为多个单词

         * lines调用flatMap这个transformation算子(参数类型是FlatMapFunction接口实现类)返回每一行的每个单词

         */

        JavaRDD words = lines.flatMap(new FlatMapFunction(){

            private static final long serialVersionUID = -3243665984299496473L;

            @Override

            public Iterable call(String line) throws Exception {

                return Arrays.asList(line.split("\t"));

            }

        });

        

        /**

         * 5、将每个单词的初始数量都标记为1个

         * words调用mapToPair这个transformation算子(参数类型是PairFunction接口实现类,PairFunction的三个参数是<输入单词, Tuple2的key, Tuple2的value>),返回一个新的RDD,即JavaPairRDD

         */

        JavaPairRDD pairs = words.mapToPair(new PairFunction() {

            private static final long serialVersionUID = -7879847028195817507L;

            @Override

            public Tuple2 call(String word) throws Exception {

                return new Tuple2(word, 1);

            }

        });

        

        /**

         * 6、计算每个相同单词出现的次数

         * pairs调用reduceByKey这个transformation算子(参数是Function2接口实现类)对每个key的value进行reduce操作,返回一个JavaPairRDD,这个JavaPairRDD中的每一个Tuple的key是单词、value则是相同单词次数的和

         */

        JavaPairRDD wordCount = pairs.reduceByKey(new Function2() {

            private static final long serialVersionUID = -4171349401750495688L;

            @Override

            public Integer call(Integer v1, Integer v2) throws Exception {

                return v1+v2;

            }

        });

        

        /**

         * 7、使用foreach这个action算子提交Spark应用程序

         * 在Spark中,每个应用程序都需要transformation算子计算,最终由action算子触发作业提交

         */

        wordCount.foreach(new VoidFunction>() {

            private static final long serialVersionUID = -5926812153234798612L;

            @Override

            public void call(Tuple2 wordCount) throws Exception {

                System.out.println(wordCount._1+":"+wordCount._2);

            }

        });

        wordCount.saveAsTextFile("hdfs://master:9000/output3");

        

        /**

         * 9、关闭SparkContext容器,结束本次作业

         */

        sc.close();

        

    }

}

创建数据文件,

 

在文件中输入内容并保存退出(单词中间为table符号):

# vi spark-input.txt               

上传数据文件

 

刷新目录会发现文件上传成功:

安装部署Spark集群以及运行WordCount详细步骤_第19张图片

 

运行程序:右键程序Run as--->Run on Hadoop,运行完毕后,刷新目录如下图,

安装部署Spark集群以及运行WordCount详细步骤_第20张图片

 

安装部署Spark集群以及运行WordCount详细步骤_第21张图片

 

运行期间访问192.168.222.100:4040,可以显示如下界面。

安装部署Spark集群以及运行WordCount详细步骤_第22张图片

 

你可能感兴趣的:(hadoop,大数据,hdfs)