Spark搭建及第一个Spark程序

Spark

简介

spark: 一个基于内存的,分布式的大数据处理框架计算引擎

官网: http://spark.apache.org/

中文官网: http://spark.apachecn.org/docs/cn/2.2.0/

比较Hadoop

  • 中间结果的存储,spark优先使用内存,hadoop 使用磁盘

  • spark的容错性更高。RDD,底层实现不一样 DAG

  • spark更加通用,mapreduce只有两个API map reduce,

    spark提供了更丰富的编程API map flatMap filter 等

  • 支持的语言更多, spark: scala, java, python, R

**注意**spark并不是替代hadoop,而是替代了mapreduce编程模型,可以兼容hadoop

优点

  • 速度快(基于内存)

  • 易用性

    4种语言的api,scala,python,java,R

  • 通用性

    一站式解决方案, 离线处理  结构化数据处理,实时处理, mllib,图计算等

  • 兼容性

    spark可以和大数据生态圈中的一些组件无缝对接

四种部署模式

  • Local模式
  • standalone模式
  • Spark on yarn
  • Spark on mesos(mesos也是一个资源调度平台,同yarn )

安装

# 解压
tar -zxvf spark-2.2.0-bin-hadoop2.7
#########################################################################
# 修改配置文件
cd spark-2.2.0-bin-hadoop2.7/conf
mv spark-env.sh.template spark-env.sh
vi spark-env.sh
#添加变量信息
export JAVA_HOME=/usr/local/jdk
#指定spark-master 所在主机
export SPARK_MASTER_HOST=linux11
#指定spark-master 所在主机rpc端口,默认为7077
export SPARK_MASTER_HOST=7077
##########################################################################
#指定woker所在主机,方便使用脚本sbin/start-all.sh启动集群
mv slaves.template slaves
vi slaves    #确保删除里面所有内容
linux12      
linux13     #三台worker主机
linux14
########################################################################
#将配置同步到其他几台服务器
for i in 2 3 4 ;
do 
scp -r spark-2.2.0-bin-hadoop2.7/ linux1$i:$PWD ;
done

启动并验证

  • 第一种(单个启动)

    
    #启动master
    
    ./sbin/start-master.sh
    
    #启动slaves
    
    ./sbin/start-slaves.sh
  • 第二种(一键启动)

    ./sbin/start-all.sh

    访问:http://linux11:8080 查看页面验证

提交spark任务命令

#第一种(练习使用,交互式命令)
./sbin/spark-shell --master spark://linux11:7077
#第二种
./sbin/spark-submit --master spark://linux11:7077 --class com.xxx.Main /root/xxx.jar  args

官网测试程序example,计算圆周率

./sbin/spark-submit –master spark://linux11:7077 –class org.apache.spark.examples.SparkPi /root/apps/spark-2.2.0-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.2.0.jar 1000

第一个Spark程序(wordcount)

/**
*  统计词频
*/
object WordCount{

    def main(args:Array[String]){
        if (args.length != 2) {
              println("Usage : ScalaWordCount <input> <output>")
              sys.exit(1)
        }
        val Array(input, output) = args
        val conf = new SparkConfig()
        //.setMaster("local[*]")      //local模式下使用
        //.setAppName(this.getClass.getSimpleName)

        //创建sprkcontext实例
        val sc:SparkContext = new SparkContext(conf)
        //获取文件内容
        val file: RDD[String] = sc.textFile(input)
        val splitedrdd: RDD[String] = file.flatMap(_.split(" "))
          // 组装
        val wordWithOne: RDD[(String, Int)] = splitedrdd.map((_, 1))
        //统计词频
        val result: RDD[(String, Int)] = wordWithOne.reduceByKey(_ + _)
        // 排序
        val finalRes: RDD[(String, Int)] = result.sortBy(-_._2)

        // 把结果数据写入到hdfs中
        finalRes.saveAsTextFile(output)
        //关闭资源
        sc.stop()

    }
}
#上传到集群上面运行
spark-submit --master spark://linux11:7077 --class com.test.WordCount /root/wordcount.jar  hdfs://linux11:9000/wordcount/input  hdfs://linux11:9000/wordcount/output
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值