大数据原生集群 (Hadoop2.X为核心) 本地测试环境搭建四

本篇安装版本

spark-2.1.1-bin-hadoop2.7
zeppelin0.9.0
Flume1.7
sqoop1.4.7
hbase-1.3.1
phoenix4.11


Spark

1、在官网下载解压spark的安装包

2、进入conf文件夹中将配置文件中的spark-defaults.conf.template、spark-env.sh.template和slaves.template末尾的“.template”去掉

在spark-env.sh文件中修改如下配置,这里要提一嘴,我虽然写了hadoopHome,但只是出于习惯才写的,其实spark本身并不需要所有的hadoophome下的文件,打开配置文件后看上面的注释,就可以发现它只需要hadoop的配置文件,而不是所有的,所以不要以为hadoop和spark必须在同一个群节点或者是需要有交集的节点

#JAVA JDK
export JAVA_HOME=/opt/jdk1.8.0_144

#scala JDK
export SCALA_HOME=/opt/scala-2.11.12

#master节点的IP
export SPARK_MASTER_IP=hdp2
export SPARK_MASTER_PORT=7077

#HADOOP_HOME
export HADOOP_HOME=/opt/hadoop-2.7.2

#hadoop配置文件
export HADOOP_CONF_DIR=/opt/hadoop-2.7.2/etc/hadoop/

#明确Spark Master、Worker守护进程的JVM选项,注意修改自己的 zookeeper地址
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=hdp1:2181,hdp2:2181,hdp3:2181 -Dspark.deploy.zookeeper.dir=/spark"

#spark历史服务器的访问端口号,并设置底层日志文件保存在hdfs上,同时指定保留任务数上限,注意如果你是高可用hadoop,那么hdp1:9000应该修改为NN队列名,如果你的spark是单独运行。那么此处路径你可以写一个本地路径,但将意味着访问日志文件不是那么方便。这个配置可以写在spark-default.conf中
export SPARK_HISTORY_OPTS="-Dspark.yarn.historyServer.address=hdp2:18018 -Dspark.eventLog.enabled=true -Dspark.history.ui.port=18018 -Dspark.history.fs.logDirectory=hdfs://hdp1:9000/spark/applicationHistorylog -Dspark.history.retainedApplications=30"

#计算完成清理任务临时目录,一般on yarn的yarn会清理,但是保险起见配上
export SPARK_WORKER_OPTS=”-Dspark.worker.cleanup.enabled=true”

#单个worker资源配置
export SPARK_WORKER_CORES=6
export SPARK_WORKER_MEMORY=6g
#守护进程内存
export SPARK_DAEMON_MEMORY=1g
#单个worker持有的容器数,配置这个一定要确保资源可以均分
#export SPARK_WORKER_INSTANCES=2

#master节点的web页面端口
export SPARK_MASTER_WEBUI_PORT=8080

#worker节点的web页面端口
export SPARK_WORKER_WEBUI_PORT=8081

#关闭REST服务,防止被攻击,一般都是on yarn所以master并不需要自身的REST服务
export SPARK.MASTER.REST.ENABLED=false
#REST服务的端口号
#export SPARK.MASTER.UI.PORT=8082

当然整个spark不止上面这些配置,只是我们自己使用常配的就这几个,有兴趣了解其他配置的可以看官网或者是spark-env常用配置

在spark-defaults.conf中添加如下配置。后期需要统一让spark任务带默认参数就需要在spark-defaults.conf文件中定义

#上面env文件中的SPARK_HISTORY_OPTS你会在有些公司看到下面的这种单个配置方式,效果也是一样的,这里由于上面配置了,所以注释
#开启日志聚合
#spark.eventLog.enabled true

#spark的日志服务器地址,主要是yarn会读取这个配置从而跳转
#spark.yarn.historyServer.address hdp2:18018

#声明spark his服务的端口
#spark.history.ui.port 18018

#hdfs上的日志聚合地址,如hadoop是高可用,那么hdp1:9000改成对应的NN队列名,同时这个配置如果和spark-env中一起存在,一定要和spark-env.sh里面的日志聚合路径一致,至于日志服务器的所在节点是随着你的启动命令决定的
#spark.eventLog.dir hdfs://hdp1:9000/spark/applicationHistorylog

#his服务上保留多少个任务
#spark.history.retainedApplications 30

#spark处理任务日志的逻辑类
spark.history.provider org.apache.spark.deploy.history.FsHistoryProvider

#自己使用不需要,在每个公司内会实现一些 implement SparkListener 的类,逗号分割,在任务初始化时调用单参conf对象构造器,干一些事情
#spark.extraListeners xxxx

#sparksql对分区数据写入时的默认行为,这里改成覆写,它不会影响hive语句的行为。不过 rdd集合.write.option("partitionOverwriteMode", "dynamic").save(path) 优先级比它高
spark.sql.sources.partitionOverwriteMode dynamic

#设置为false,允许在交互式或者其他sql场景下通过set命令修改核心参数,这个核心参数比较模糊,一般都是放开的
spark.sql.legacy.setCommandRejectsSparkCoreConfs false

#开启日志滚动,且设置单个文件128M
spark.eventLog.rolling.enabled true
spark.eventLog.rolling.maxFileSize 128m

#spark在hdfs上的资源jar,通常的商用on yarn集群不配置这个,让spark默认在提交任务时将jar打包进task,上传到hdfs运行任务时从task解压,这样就允许使用方动态的加一些资源,可控性比直接从hdfs上拉取高
spark.yarn.jars hdfs://hdp1:9000/home/hadoop/spark_jars/*.jar

#当前任务的ui端口
spark.ui.port 14040

#任务状态暴露能力,一般不需要另行配置,只有明确的第三方工具确定了,才显示为true
#spark.metrics.appStatusSource.enabled false

随后确保hadoop日志聚合是开启状态,并在hdfs上创建出配置文件中对应的/spark/applicationHistorylog、/home/hadoop/spark_jars目录,并将日志目录的权限修改为777,而spark_jars存放$SPARK_HOME/jars文件夹下的所有jar包

hadoop fs -mkdir -p /home/hadoop/spark_jars
hadoop fs -mkdir -p /spark/applicationHistorylog
hadoop fs -put /opt/spark-2.1.1/jars/* /home/hadoop/spark_jars
hadoop fs -chmod 777 /spark/applicationHistorylog

在slaves文件中修改集群成员如:

hdp1
hdp2
hdp3

3、将spark分发在服务器集群中

4、在master节点服务器的spark的sbin下使用相关命令启动spark

start-all-sh
start-history-server.sh 

5、编写一个小程序,当我们编译好jar之后,在spark集群中使用时,调用bin目录下的spark-submit命令,格式如下,命令中的“\”是为了不让命令输入时,使用回车之后,直接执行命令,可以达到命令多行输入的效果,后面是解释,要注意我用的是自带的测试jar,该jar随着spark版本不同自身不同,大家自己注意一下

bin/spark-submit  \   调用的命令
--class   org.apache.spark.examples.SparkPi  \  使用jar包中的那个类
--master spark://hdp1:7077  \   spark集群Master的地址,spark在这一点上比较奇葩,你在那台节点上运行的启动集群命令那台节点就很大概率是master节点,如是本地模式这个命令参数值为local就可以,不过一般本地的话都是在开发用的不会上机器
examples/jars/spark-examples_2.11-2.1.2.jar \  jar包路径,路径用自己的我这个路径是相对路径,这个配置写在倒数第二个
10  jar包运行时要传入参数,一般这个配置就是写到最后的

以上命令是最省略版的,如有需要可以去查询其他的参数,不过一般常用的格式如下

spark-submit --class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
--driver-memory 4g \
--executor-memory 2g \
--executor-cores 1 \
--queue thequeue \
examples/jars/spark-examples*.jar \
10

对于master参数,在实际使用时都是在yarn上执行,而并非直接使用spark自己的master调度

如果你想访问spark的iu页面,可以在浏览器中访问master节点的8080端口,而不是7077,历史服务器是你在那台节点上启动的spark历史服务就是那台

有一点要注意,上面的配置用的时spark on yarn,虽然有三个节点,但其实一个就够了,毕竟只需要用来生成spark上下文资源提交到yarn而已,甚至服务进程相关的资源配置都可能往小了设置。但如果你要搭建spark on master的测试环境,除了合理设置上面各项服务配置之外,还要在spark-defaults.conf文件中合理设置spark.local.dir配置,这是woker节点的工作路径,和yarn的yarn.nodemanager.local-dirs一个意思,还要在spark-env.sh中设置SPARK_WORKER_OPTS="-Dspark.worker.cleanup.enabled=true",使得spark自动维护工作路径的空间

zeppelin

这个软件是一个可视化代码工具,支持很多的服务,在安装上属于开箱即用,apache下的

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值