Linux上搭建Spark集群及spark shell交互式命令窗口

Spark集群搭建

基础知识

  • Spark是用于大规模数据处理的统一分析的计算引擎;是一个快速,通用,可扩展的大数据分析引擎;基于内存计算(速度快),基于mapreduce通常将数据中间存储在磁盘上。
  • HA机制:高可用机制,当主节点挂掉后启用备用主节点(前提是备用节点得打开及先处于待机状态)

集群搭建:因为Spark是依赖于Hadoop的,所以在下载安装包时需要找到自己Hadoop的版本对应的Spark版本。

  • 在Linux上解压安装
  • 修改配置文件:
    1.找到conf中的spark-env.sh.template文件重命名为spark-env.sh并进入修改配置信息:
export JAVA_HOME=/root/apps/jdk1.8.0_201
#export SPARK_MASTER_HOST=hdp-0
#export SPARK_MASTER_PORT=7077
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=hdp-0,hdp-1,hdp-2 -Dspark.deploy.zookeeper.dir=/spark"
export SPARK_WORKER_CORES=8
export SPARK_WORKER_MEMORY=6g
export SPARK_LOCAL_IP="192.168.136.134"
  1. 找到conf中slaves文件将其他机器放入
hdp-1
hdp-2

启动集群:在sbin下启动。

  • 因为Spark依赖于zookeeper和hdfs,所以在启动Spark时应先启动zookeeper和hdfs。(zookeeper记录Spark集群的信息,用于处理集群丢失节点的问题)
[root@hdp-1 sh]# ./zkmanager.sh start
[root@hdp-0 ~]# start-dfs.sh
[root@hdp-0 sbin]# ./start-all.sh 

网页验证:Spark的端口号是8080

  • 在网页上访问:http://hdp-0:8080出现下图信息及成功。
    在这里插入图片描述

  • 解释:
    URL-----提供外部访问的url
    Status----master的状态

  • 高可用集群:在worker上启动start-master(启动备用节点)
    此时在网页上会多显示一条信息:Status: STANDBY----master状态(待机备用)

spark shell交互式命令窗口

  • 在bin下启动
  1. 在spark集群上交互
./spark-shell --master 集群上提供访问的URL --executor-memory 执行器(worker)所占内存的大小 --total-executor-cores 一共执行器(worker)的个数

运行wordcount程序:

sc.textFile("hdfs://hdp-0:9000/spark/hi.txt").flatMap(_.split(",")).map((_,1)).reduceByKey(_+_).saveAsTextFile("hdfs://hdp-0:9000/spark/out")
  • 解释:
    sc----scala中SparkContext(spark的上下文)
    textFile(“hdfs://hdp-0:9000/spark/hi.txt”)----在hdfs中读取数据
    flatMap(.split(" "))----执行flapmap,将获取的数据切分
    map((
    ,1))----执行map,将切分后的单词和1构成元组
    reduceByKey(+)–执行reduceByKey,按照key进行reduce,并将value累加
    saveAsTextFile(“hdfs://hdp-0:9000/spark/out”)----执行saveAsTextFile,将结果写入到hdfs中
  • 程序运行后在网页上:
    Applications: 1 Running, 0 Completed-----------Running就会加一且在Worker下面的Running Applications (1)中有其具体的执行信息
  1. 以客户端的方式部署到yarn上执行
./spark-shell --master yarn --deploy-mode client
scala> val array = Array(1,2,3,4,5)
array: Array[Int] = Array(1, 2, 3, 4, 5)
scala> val rdd = sc.makeRDD(array)
rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[0] at makeRDD at <console>:26
scala> rdd.count
res0: Long = 5  
  • 可能出现的问题:使用Yarn运行spark在执行过程中遇到下面问题
Exception in thread "main" org.apache.spark.SparkException: When running with master 'yarn' either HADOOP_CONF_DIR or YARN_CONF_DIR must be set in the environment.

需要在spark中的conf里找到spark-env.sh添加相应的配置:

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

Hadoop中找到yarn-site.xml添加下面的配置:

<property>
		<name>yarn.nodemanager.vmem-check-enabled</name>
		<value>false</value>
		<description>Whether virtual memory limits will be enforced for containers</description>
</property>
<property>
		<name>yarn.nodemanager.vmem-pmem-ratio</name>
		<value>4</value>
		<description>Ratio between virtual memory to physical memory when setting memory limits for containers</description>
</property>
  • 测试:在网页上查询:http://hdp-0:8088,可以看到Spark shell应用程序正在运行。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值