大数据处理 | Spark集群搭建及基本使用

启动Spark集群

如果要使用HDFS的话,在启动Spark集群前需要先启动Hadoop集群,

$cd/usr/local/hadoop/$./sbin/start-all.sh

然后进入Spark目录,启动Spark集群,

$cd/usr/local/spark$./sbin/start-all.sh

需要说明一下,前面配置Hadoop集群是提到,需要配置ssh免密登陆,对于Spark也是同样的道理,如果不配置ssh免密登陆的话,执行./sbin/start-all.sh会提示输入密码。

除了使用./sbin/start-all.sh启动Spark集群外,还可以分开启动,先启动master节点,然后启动slave节点,

$./sbin/start-master.sh$./sbin/start-slaves.sh

如果前面没有完成Master节点配置指定master节点IP,那么执行./sbin/start-slaves.sh时则无法注册master节点的IP,这样集群计算资源则无法使用。除了配置spark-env.sh指定master节点IP外,还可以通过下面方式指定注册的master节点IP,

$./sbin/start-slave.sh10.110.113.132

然后分别在master节点和slave节点执行下面命令会看到分别多出一个Master进程和Worker进程。

Spark基本使用

运行原理

如果使用过tensorflow的话,应该对Spark的使用很容易理解,Spark的计算过程和tensorflow有相似之处。

回忆一下,我们在使用tensorflow时需要首先构造一个计算图,然后实例化一个session,然后用session.run来启动图运算。

其实Spark也是这样,RDD(弹性分布式数据集)是Spark中最重要的概念之一,它提供了一个共享内存模型。Saprk的执行过程中主要包括两个动作:转换与行动。其中转换操作就如同tensorflow中的构造计算图的过程,在这个过程中Spark构造一个有向无环图(DAG),但是不进行运算,输入为RDD输出则是一个不同的RDD,当执行行动操作时就如同tensorflow中的session.run,开始执行运算。

扫描二维码关注公众号,回复: 8976258 查看本文章

Spark中有很多转换操作,例如,

  • groupByKey
  • reduceByKey
  • sortByKey
  • map
  • filter
  • join
  • ……

行动操作包括,

  • count
  • collect
  • first
  • foreach
  • reduce
  • take
  • ……

运行模式

Spark中通过master url来执行Spark的运行模式,Spark的运行模式包括本地运行、集群运行、yarn集群等,关于Spark master url的指定不同运行模式的含义如下,

URL值运行模式local使用1个线程本地化运行local[K]使用K个线程本地化运行local[*]使用逻辑CPU个数数量的线程来本地化运行spark://HOST:PORT已经为大家精心准备了大数据的系统学习资料,从Linux-Hadoop-spark-......,需要的小伙伴可以点击它指定集群模式运行Sparkyarn-cluster集群模式连接YARN集群yarn-client客户端模式连接YARN集群mesos://HOST:PORT连接到指定的Mesos集群

示例

下面就以一个简单的示例把前面Hadoop和Spark串联在一起,讲解一下HDFS+Spark的使用方法。

上传数据到HDFS

新建一个hello_world.txt的本地文件,并在文件中添加3行hello world,然后上传至HDFS,

$cd/usr/local/hadoop/$./bin/hdfsdfs-mkdir-p/usr/hadoop$touchhello_world.txt$echo-e"helloworld\nhelloworld\nhelloworld">>hello_world.txt$./bin/hdfsdfs-put./hello_world.txt/usr/hadoop

编写Spark程序

新建一个spark.py的Python文件,

$vimspark.py

添加如下内容,

frompysparkimportSparkConffrompysparkimportSparkContextconf=SparkConf().setAppName("FirstProject").setMaster("local[*]")sc=SparkContext.getOrCreate(conf)rdd=sc.textFile("hdfs:///master:9000/usr/hadoop/hello_world.txt")rdd.map(lambdaline:line).foreach(print)

然后运行程序,

$pythonspark.pyhelloworldhelloworldhelloworld

以上就是Spark的集群配置过程和基本使用方法。

发布了10 篇原创文章 · 获赞 0 · 访问量 97

猜你喜欢

转载自blog.csdn.net/yiyidsj/article/details/104183480