Spark安装与入门使用

来源:互联网 发布:怀化学院教务网络管理 编辑:程序博客网 时间:2024/06/07 10:47

Spark是一个通用的大规模数据快速处理引擎,一个大数据分布式处理框架。Spark之所以能被迅速的应用到各种大数据处理场景下,与其为Batching processing,Streaming Processing,Ad-hoc Query等三大大数据处理问题提供了近乎完美的解决方案息息相关。在Spark中,使用Spark SQL,Spark Streaming,MLlib,Graphx很好的解决了上述提及的三大大数据处理核心问题。本文主要介绍spark单节点伪集群的安装与简单使用。

安装
1.JDK环境
Spark最初使用Scala开发,运行在Java虚拟机(JVM)上。需要安装jdk环境,本文的环境如下(jdk的安装在此不再累述):

# echo $JAVA_HOME /home/jdk1.8.0_121# java -versionjava version "1.8.0_121"Java(TM) SE Runtime Environment (build 1.8.0_121-b13)Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

2.SSH服务以及免密码登录
对于单个节点的伪集群,需要确保ssh localhost 是成功的,否则,需要通过ssh-keygen创建相关的密钥。如下,可以创建口令为空的密钥:

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa //生成口令为空的ssh密钥 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys //将公钥加入已认证的密钥中

3.scala
scala的安装主要步骤是解压,配置环境变量,(安装包为scala-2.12.1.tgz,安装于home目录下)

# tar -zxvf  scala-2.12.1# ln -sf scala-2.12.1 scala# vim ~/.bash_profile     SCALA_HOME=/home/scala    PATH=$PATH:$HOME/bin:/usr/local/bin:$SCALA_HOME/bin    export PATH  SCALA_HOME# source ~/.bash_profile验证scala的安装# scalaWelcome to Scala 2.12.1 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_121).Type in expressions for evaluation. Or try :help.scala> 9*9res0: Int = 81

4.spark
尽管spark并不是必须依赖于Hadoop,但是结合Hadoop的分布式文件系统(HDFS)提供的海量存储,spark可以充分发挥其在大数据领域的处理的卓越性能。主要步骤:解压安装包,修改环境变量,修改spark配置。

# tar -zxvf  spark-2.2.0-bin-hadoop2.7.tgz# ln -sf spark-2.2.0-bin-hadoop2.7 spark# vim ~/.bash_profile     SPARK_HOME=/home/spark    PATH=$PATH:$HOME/bin:/usr/local/bin:$SPARK_HOME/bin    export PATH SPARK_HOME# source ~/.bash_profile

配置spark

# pwd    /home/spark/conf# cp spark-env.sh.template spark-env.sh# vim spark-env.sh    export JAVA_HOME=/home/jdk1.8.0_121      #java安装目录    export SCALA_HOME=/home/scala            #scala安装目录    export SPARK_MASTER_IP=192.168.94.200    #master节点的IP    export SPARK_MASTER_PORT=7077            #master服务端口,默认为7077    export SCALA_MASTER_WEBUI_PORT=8080      #master节点对应web服务的端口,默认为8080    export SPARK_WORKER_MEMORY=1g            #限制worker节点能够分配给executor的内存大小    export HADOOP_CONF_DIR=/home/hadoop/etc/hadoop #hadoop集群配置文件路径

在spark主机列表中加入当前主机(当前主机名为master)

# cp slaves.template slaves# echo $HOSTNAMEmaster# vim slavesmaster

使用
1.测试:使用spark计算HDFS上的数据
启动HDFS,并上传测试数据

# start-dfs.shStarting namenodes on [localhost]localhost: starting namenode, logging to /home/hadoop-2.7.3/logs/hadoop-root-namenode-master.outlocalhost: starting datanode, logging to /home/hadoop-2.7.3/logs/hadoop-root-datanode-master.outStarting secondary namenodes [0.0.0.0]0.0.0.0: starting secondarynamenode, logging to /home/hadoop-2.7.3/logs/hadoop-root-secondarynamenode-master.out# jps2993 NameNode3121 DataNode3396 Jps3287 SecondaryNameNode # hadoop fs -mkdir -p /test# hadoop fs -copyFromLocal /home/spark/README.md /test# hadoop fs -ls  /testFound 1 items-rw-r--r--   1 root supergroup       3809 2017-09-11 21:06 /test/README.md

启动spark

# pwd/home/spark/sbin# ./start-all.sh //进入spark目录下执行该命令,因为Hadoop的bin目录下也有一个start-all.sh;如果直接执行start-all.sh,具体是执行spark中的还是hadoop中,取决于PATH变量中的位置#

使用spark的Python shell进行及时数据分析

# pwd/home/spark/bin# ./pysparkUsing Python version 2.7.3 (default, Mar  7 2016 10:43:13)SparkSession available as 'spark'.>>> lines = sc.textFile("/test/README.md")>>> lines.count()103>>> lines.first()u'# Apache Spark'>>> 

对象sc是shell启动时自动创建的一个SparkContext对象,它包含了当前spark的环境变量。sc.textFile()从给定路径的文件中创建一个RDD(Resilient distributed dataset),其后分别调用RDD的行动操作count()和first()对数据进行分析。”/test/README.md”的完整路径为”hdfs://localhost:9000/test/README.md”,因为之前已经在spark-env.sh脚本中导出了hadoop的环境配置,故spark可以使用hdfs相对路径访问文件。

2.测试:使用spark shell计算本地磁盘上的数据
前面提及spark并不是绝对依赖于HDFS,spark也可以访问本地文件系统。在此停掉HDFS进程,并使用spark shell计算本地文件。

# ./stop-dfs.sh# pwd/home/spark/sbin# ./stop-all.sh

修改spark-env.sh,注释掉HADOOP_CONF_DIR配置,再次使用Python shell进行数据分析。

# pwd/home/spark/bin# ./pyspark Using Python version 2.7.3 (default, Mar  7 2016 10:43:13)SparkSession available as 'spark'.>>> lines = sc.textFile("/home/spark/README.md")>>> lines.count()103>>> lines.first()u'# Apache Spark'>>> 
原创粉丝点击