CentOS6.5下spark分布式集群的搭建

Spark是一个快速、通用的计算集群框架,它的内核使用Scala语言编写,它提供了Scala、Java和Python编程语言high-level API,使用这些API能够非常容易地开发并行处理的应用程序。
下面,我们通过搭建Spark集群计算环境,并进行简单地验证,来体验一下使用Spark计算的特点。无论从安装运行环境还是从编写处理程序(用Scala,Spark默认提供的Shell环境可以直接输入Scala代码进行数据处理),我们都会觉得比Hadoop MapReduce计算框架要简单得多,而且,Spark可以很好地与HDFS进行交互(从HDFS读取数据,以及写数据到HDFS中)。

 

安装配置

  • 下载安装配置Scala

           下载地址:http://www.scala-lang.org/files/archive/scala-2.10.3.tgz

            tar  -zxvf   scala-2.10.3

            mv   scala-2.10.3  scala

 

  • 在/etc/profile 中增加环境变量SCALA_HOME,并使之生效:

           export   SCALA_HOME=/usr/local/scala

           export   PATH=.:$PATH:$SCALA_HOME/bin

  • 将scala的程序文件和配置文件拷贝分发到从节点机器上:

            scp   -r   scala   slaves1:/usr/local/

            scp   -r   scala   slaves2:/usr/local/

  • 下载安装配置Spark

  • 我们首先在主节点master上配置Spark程序,然后将配置好的程序文件复制分发到集群的各个从结点上。下载解压缩:

            下载地址:http://d3kbcqa49mib13.cloudfront.net/spark-0.9.0-incubating-bin-hadoop1.tgz

            tar   -zxvf   spark-0.9.0-incubating-bin-hadoop1.tgz

  • 在/etc/profile 中增加环境变量SPARK_HOME,并使之生效:

           export  SPARK_HOME=/usr/local/spark

           export  PATH=.:$PATH:$SCALA_HOME/bin:$SPARK_HOEM/bin

  • 在master上配置Spark,修改spark-env.sh配置文件:

           cd  /usr/local/spark

           cp  spark-env.sh.template  spark-env.sh

          在该脚本文件中,同时将SCALA_HOME和JAVA_HOEM配置为Unix环境下实际指向路径,例如:

           SCALA_HOME=/usr/local/scala

           JAVA_HOEM=/usr/local/jdk

  • 修改conf/slaves文件,将计算节点的主机名添加到该文件,一行一个,例如:

           slaves1

           salves2

  • 最后,将Spark的程序文件和配置文件拷贝分发到从节点机器上:

          scp   -r   spark  slaves1:/usr/local/

          scp   -r   spark  slaves2:/usr/local/

  • 启动Spark集群

    我们会使用HDFS集群上存储的数据作为计算的输入,所以首先要把Hadoop集群安装配置好,并成功启动,我这里使用的是Hadoop 1.2.1版本。启动Spark计算集群非常简单,执行如下命令即可:

    cd  /usr/local/spark

           sbin/start-all.sh

           可以看到,在master上启动了一个名称为Master的进程,在slaves1和slaves2上启动了一个名称为Worker的进程,如下所示,我这里也启动了Hadoop集群:
           主节点msater上:

          

           从节点slaves1上:

          

           从节点slaves2上:

          

           各个进程是否启动成功,也可以查看日志来诊断,例如:

           tail   -100f  $SPARK_HOME/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-slaves1.out

           tail   -100f  $SPARK_HOME/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-slaves2.out

  • Spark集群计算验证

            我们使用我的网站的访问日志文件来演示,示例如下:

           

            统计该文件里面IP地址出现频率,来验证Spark集群能够正常计算。另外,我们需要从HDFS中读取这个日志文件,然后统计IP地址频率,最后将结果再保存到HDFS中的 指定目录。
           首先,需要启动用来提交计算任务的Spark Shell:

           sbin/spark-shell

           在Spark Shell上只能使用Scala语言写代码来运行。
           然后,执行统计IP地址频率,在Spark Shell中执行如下代码来实现:

           var file=sc.textFile("hdfs://master:9000/apachelog/ida_20141022_001.log")

           val result = file.flatMap(line => line.split("\\s+.*")).map(word => (word, 1)).reduceByKey((a, b) => a + b)

  • 最后,我们想要将结果保存到HDFS中,只要输入如下代码:

           result.saveAsTextFile("hdfs://master:9000/apachelog/ida_20141022_001.log.result")

  • 查看HDFS上的结果数据:

  • hadoop fs -cat /apachelog/ida_20141022_001.log_result/part-00000
    (42.156.250.103,2)
    (14.110.234.12,98)
    (123.147.245.120,117)
    (14.152.68.149,1)
    (125.84.60.71,20)
    (223.85.132.24,3)
    (117.159.28.22,21)
                                

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值