zoukankan      html  css  js  c++  java
  • 大数据入门第二十二天——spark(一)入门与安装

    一、概述

      1.什么是spark

      从官网http://spark.apache.org/可以得知:

    Apache Spark™ is a fast and general engine for large-scale data processing.

      主要的特性有:

      Speed:快如闪电(HADOOP的100倍+)

      Easy to Use:Scala——Perfect、Python——Nice、Java——Ugly、R

      Generality:Spark内核上可以跑Spark SQL、Spark Streaming、GraphX等。

      Run EveryWhere:HADOOP、HBASE、kubernetes等。

      中文简明介绍:

      Spark是一种快速、通用、可扩展的大数据分析引擎;

      2009年诞生于加州大学伯克利分校AMPLab,2010年开源,2013年6月成为Apache孵化项目,2014年2月成为Apache顶级项目。

      目前,Spark生态系统已经发展成为一个包含多个子项目的集合,其中包含SparkSQL、Spark Streaming、GraphX、MLlib等子项目,Spark是基于内存计算的大数据并行计算框架。Spark基于内存计算,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将Spark部署在大量廉价硬件之上,形成集群。Spark得到了众多大数据公司的支持,这些公司包括Hortonworks、IBM、Intel、Cloudera、MapR、Pivotal、百度、阿里、腾讯、京东、携程、优酷土豆。当前百度的Spark已应用于凤巢、大搜索、直达号、百度大数据等业务;阿里利用GraphX构建了大规模的图计算和图挖掘系统,实现了很多生产系统的推荐算法;腾讯Spark集群达到8000台的规模,是当前已知的世界上最大的Spark集群。

       更多介绍,参见官网

    二、安装

      这里下载的是spark的1.6.3的pre build的版本,对应的是Hadoop2.6以及scala 2.10的版本,这里也是为了兼容之前安装的Hadoop等版本。到今天(2018.4)为止,spark的2.0版本已经发布了有一段时间了,后续将会进行2.0版本新特性的相关补充,此处入门就以1.6.3为例!

      1.下载

      这里用本机下载好了,通过sftp上传到了mini1

      

      // 前置条件JDK等已经安装完毕!

      2.解压

    [hadoop@mini1 ~]$ tar -zxvf spark-1.6.3-bin-hadoop2.6.tgz -C apps/

      // 这里发现之前安装的时候Home目录只给了2G,而选择软件安装的时候又都安装在Home目录下了,通过df -h和du -sh查看到使用情况。下次需要注意!

      

      基本上,目录下也是常见的套路:sbin里一些起停脚本,bin下一些操作脚本等

      3.配置

      进入spark的conf目录,常规的套路了:

    [hadoop@mini1 spark-1.6.3-bin-hadoop2.6]$ cd conf/
    [hadoop@mini1 conf]$ mv spark-env.sh.template spark-env.sh
    vim spark-env.sh 

      追加以下内容(最简配置):请通过export命令提前查看相关变量值(这里Hosts也已经配置了)

    export JAVA_HOME=/opt/java/jdk1.8.0_151
    export SPARK_MASTER_IP=mini1
    export SPARK_MASTER_PORT=7077

      配置slaves:

    [hadoop@mini1 conf]$ mv slaves.template slaves
    vim slaves

      配置worker节点:(和Hadoop基本类似套路)

    mini2
    mini3

      4.拷贝到其他节点

    scp -r spark-1.6.3-bin-hadoop2.6/ mini2:/home/hadoop/apps/
    scp -r spark-1.6.3-bin-hadoop2.6/ mini3:/home/hadoop/apps/

       5.启动测试

      在mini1上启动(暂时未配置环境变量):

    [hadoop@mini1 spark-1.6.3-bin-hadoop2.6]$ sbin/start-all.sh 

      通过jps可以看到Master和Worker等进程;

      WEB界面:http://mini1:8080/

       6.Master单点问题

    到此为止,Spark集群安装完毕,但是有一个很大的问题,那就是Master节点存在单点故障,要解决此问题,就要借助zookeeper,并且启动至少两个Master节点来实现高可靠,配置方式比较简单:
    Spark集群规划:node1,node2是Master;node3,node4,node5是Worker
    安装配置zk集群,并启动zk集群
    停止spark所有服务,修改配置文件spark-env.sh,在该配置文件中删掉SPARK_MASTER_IP并添加如下配置
    export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=zk1,zk2,zk3 -Dspark.deploy.zookeeper.dir=/spark"
    1.在node1节点上修改slaves配置文件内容指定worker节点
    2.在node1上执行sbin/start-all.sh脚本,然后在node2上执行sbin/start-master.sh启动第二个Master

    三、执行Spark程序

      1.执行spark示例程序

    /usr/local/spark-1.5.2-bin-hadoop2.6/bin/spark-submit 
    --class org.apache.spark.examples.SparkPi 
    --master spark://node1.itcast.cn:7077 
    --executor-memory 1G 
    --total-executor-cores 2 
    /usr/local/spark-1.5.2-bin-hadoop2.6/lib/spark-examples-1.5.2-hadoop2.6.0.jar 
    100

      //根据实际安装修改相关命令位置(出现的小错误这里暂时忽略,后续处理)

      2.启动spark shell

    
    

    [hadoop@mini1 ~]$ /home/hadoop/apps/spark-1.6.3-bin-hadoop2.6/bin/spark-shell
    > --master spark://mini1:7077
    > --executor-memory 1g
    > --total-executor-cores 2

    参数说明:
    --master spark://node1.itcast.cn:7077 指定Master的地址,如果不指定,则为Local模式了!
    --executor-memory 2g 指定每个worker可用内存为2G
    --total-executor-cores 2 指定整个集群使用的cup核数为2个

      Spark Shell中已经默认将SparkContext类初始化为对象sc。用户代码如果需要用到,则直接应用sc即可

    1.首先启动hdfs
    2.向hdfs上传一个文件到hdfs://node1.itcast.cn:9000/words.txt
    3.在spark shell中用scala语言编写spark程序
    sc.textFile("hdfs://node1.itcast.cn:9000/words.txt").flatMap(_.split(" "))
    .map((_,1)).reduceByKey(_+_).saveAsTextFile("hdfs://node1.itcast.cn:9000/out")
    
    4.使用hdfs命令查看结果
    hdfs dfs -ls hdfs://node1.itcast.cn:9000/out/p*
    
    说明:
    sc是SparkContext对象,该对象时提交spark程序的入口
    textFile(hdfs://node1.itcast.cn:9000/words.txt)是hdfs中读取数据
    flatMap(_.split(" "))先map在压平
    map((_,1))将单词和1构成元组
    reduceByKey(_+_)按照key进行reduce,并将value累加
    saveAsTextFile("hdfs://node1.itcast.cn:9000/out")将结果写入到hdfs中
  • 相关阅读:
    14.18 InnoDB Backup and Recovery 备份和恢复:
    14.18 InnoDB Backup and Recovery 备份和恢复:
    php使用 _before_index() 来实现访问页面前,判断登录
    php使用 _before_index() 来实现访问页面前,判断登录
    查询方式实例演示
    查询方式实例演示
    haproxy timeout server 46000 后台超时时间
    haproxy timeout server 46000 后台超时时间
    14.10.5 Reclaiming Disk Space with TRUNCATE TABLE 回收空间使用TRUNCATE TABLE
    14.10.5 Reclaiming Disk Space with TRUNCATE TABLE 回收空间使用TRUNCATE TABLE
  • 原文地址:https://www.cnblogs.com/jiangbei/p/8684186.html
Copyright © 2011-2022 走看看