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

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

# hdfs dfs -ls /

如何验证hadoop是否安装成功 如何验证hadoop集群成功启动_大数据

 

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

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

如何验证hadoop是否安装成功 如何验证hadoop集群成功启动_如何验证hadoop是否安装成功_02

 

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

如何验证hadoop是否安装成功 如何验证hadoop集群成功启动_spark_03

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

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

解压并安装 Spark

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

Spark安装包的权限设置

如何验证hadoop是否安装成功 如何验证hadoop集群成功启动_hdfs_04

 

解压Spark安装包,

如何验证hadoop是否安装成功 如何验证hadoop集群成功启动_spark_05

如何验证hadoop是否安装成功 如何验证hadoop集群成功启动_hdfs_06

 

重命名Spark安装包,

如何验证hadoop是否安装成功 如何验证hadoop集群成功启动_大数据_07

 

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

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

如何验证hadoop是否安装成功 如何验证hadoop集群成功启动_大数据_08

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

使环境变量信息生效,

如何验证hadoop是否安装成功 如何验证hadoop集群成功启动_spark_09

 

验证 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

如何验证hadoop是否安装成功 如何验证hadoop集群成功启动_hadoop_10

 

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

如何验证hadoop是否安装成功 如何验证hadoop集群成功启动_hadoop_11

 

Spark-WordCount实例

10.创建Hadoop项目,

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

如何验证hadoop是否安装成功 如何验证hadoop集群成功启动_大数据_12

 

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

如何验证hadoop是否安装成功 如何验证hadoop集群成功启动_hadoop_13

 

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

如何验证hadoop是否安装成功 如何验证hadoop集群成功启动_spark_14

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

如何验证hadoop是否安装成功 如何验证hadoop集群成功启动_大数据_15

 

创建类,

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

如何验证hadoop是否安装成功 如何验证hadoop集群成功启动_大数据_16

 

填写类名:WordCount,点击finish。

如何验证hadoop是否安装成功 如何验证hadoop集群成功启动_大数据_17

 

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

如何验证hadoop是否安装成功 如何验证hadoop集群成功启动_hdfs_18

 

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

如何验证hadoop是否安装成功 如何验证hadoop集群成功启动_如何验证hadoop是否安装成功_19

 

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<String> lines = sc.textFile("hdfs://master:9000/spark-input.txt");

/**

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

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

        

*/
        JavaRDD<String> words = lines.flatMap(new FlatMapFunction<String, String>(){
            private static final long serialVersionUID = -3243665984299496473L;
@Override
            public Iterable<String> call(String line) throws Exception {
                return Arrays.asList(line.split("\t"));
            }
        });
        
/**

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

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

        

*/
        JavaPairRDD<String, Integer> pairs = words.mapToPair(new PairFunction<String, String, Integer>() {
            private static final long serialVersionUID = -7879847028195817507L;
@Override
            public Tuple2<String, Integer> call(String word) throws Exception {
                return new Tuple2<String, Integer>(word, 1);
            }
        });
        
/**

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

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

        

*/
        JavaPairRDD<String, Integer> wordCount = pairs.reduceByKey(new Function2<Integer, Integer, Integer>() {
            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<Tuple2<String,Integer>>() {
            private static final long serialVersionUID = -5926812153234798612L;
@Override
            public void call(Tuple2<String, Integer> wordCount) throws Exception {
                System.out.println(wordCount._1+":"+wordCount._2);
            }
        });
        wordCount.saveAsTextFile("hdfs://master:9000/output3");
        
/**

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

       

*/
        sc.close();
        
    }
}

创建数据文件,

如何验证hadoop是否安装成功 如何验证hadoop集群成功启动_hdfs_20

 

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

# vi spark-input.txt

如何验证hadoop是否安装成功 如何验证hadoop集群成功启动_hdfs_21

上传数据文件

如何验证hadoop是否安装成功 如何验证hadoop集群成功启动_spark_22

 

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

如何验证hadoop是否安装成功 如何验证hadoop集群成功启动_hdfs_23

 

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

如何验证hadoop是否安装成功 如何验证hadoop集群成功启动_hdfs_24

 

如何验证hadoop是否安装成功 如何验证hadoop集群成功启动_如何验证hadoop是否安装成功_25

 

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

如何验证hadoop是否安装成功 如何验证hadoop集群成功启动_大数据_26