2023年7月26日发(作者:)
spark⼏种部署模式,每种模式特点及搭建Spark分布式集群搭建的步骤1)准备linux环境,设置集群搭建账号和⽤户组,设置ssh,关闭防⽕墙,关闭seLinux,配置host,hostname2)配置jdk到环境变量3)搭建hadoop集群,如果要做master,需要搭建zookeeper集、修改,hadoop_,,slaves等配置⽂件4)启动hadoop集群,启动前要格式化namenode5)配置spark集群,修改,slaves等配置⽂件,拷贝hadoop相关配置到spark conf⽬录下6)启动spark集群。spark的有⼏种部署模式,每种模式特点local(本地模式):常⽤于本地开发测试,本地还分为local单线程和local-cluster多线程;standalone(集群模式):典型的Mater/slave模式,不过也能看出Master是有单点故障的;Spark⽀持ZooKeeper来实现 HAon yarn(集群模式): 运⾏在 yarn 资源管理器框架之上,由 yarn 负责资源管理,Spark 负责任务调度和计算on mesos(集群模式): 运⾏在 mesos 资源管理器框架之上,由 mesos 负责资源管理,Spark 负责任务调度和计算on cloud(集群模式):⽐如 AWS 的 EC2,使⽤这个模式能很⽅便的访问 Amazon的 S3;Spark ⽀持多种分布式存储系统:HDFS 和 S3下⾯对集中部署模式进⾏详细介绍1、本地模式该模式运⾏任务不会提交在集群中,只在本节点执⾏,有两种情况本地模式: 测试或实验性质的本地运⾏模式 (单机)运⾏该模式⾮常简单,只需要把Spark的安装包解压后,改⼀些常⽤的配置即可使⽤,⽽不⽤启动Spark的Master、Worker守护进程( 只有集群的Standalone⽅式时,才需要这两个⾓⾊),也不⽤启动Hadoop的各服务(除⾮你要⽤到HDFS)。Spark不⼀定⾮要跑在hadoop集群,可以在本地,起多个线程的⽅式来指定。将Spark应⽤以多线程的⽅式直接运⾏在本地,⼀般都是为了⽅便调试,本地单机模式分三类:local:只启动⼀个executorlocal[k]:启动k个executorlocal[*]:启动跟cpu数⽬相同的 executor搭建步骤:安装java$ sudo apt-get install openjdk-8-jre(中间有报错:raise IllegalArgumentException((': ', 1)[1], stackTrace)lArgumentException: u'Unable to locate hive jars to connect to metastore. Please .',⽹上提⽰查看jdk版本,发现ubuntu 18.04默认是openjdk-11-jdk包(java -version提⽰10.0.1)。重新安装openjdk-8-jdk版本不报错)配置jdk到环境变量(可以⽤命令:sudo update-alternatives --config java来查看你的Java版本有哪些,需要将哪个添加到环境变量中)$ sudo vim /etc/profile添加export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64安装Scala安装spark-2.3.1-bin-hadoop2.7(没有Hadoop的环境下)$ sudo wget -c [/apache/spark/spark-2.3.1/](/apache/spark/spark-2.3.1/spark-2.3.1-bin-hadoo$ sudo tar zxf -C /usr/lib/spark$ cd /usr/lib/spark$ sudo ln -s spark-2.3.1-bin-hadoop2.7 spark$ sudo vim ~/.bashrc添加export SPARK_HOME=/usr/lib/spark/sparkexport PATH=SPARK_HOME/binexport PYTHONPATH=/home/rss/anaconda2/bin(这⾥我修改了python的环境变量,使⽤⾃⼰的pythonsudo ln -s /home/rss/anaconda2/bin/python /usr/bin/pythonPATH=/usr/bin:$PATH)安装成功运⾏:使⽤spark-shell、spark-submit、pyspark例如使⽤spark-shell:local:单机、单核运⾏al[k]:启动k个al[]:启动跟cpu数⽬相同的 executor*上述情况中,local[N]与local[*]相当于⽤单机的多个线程来模拟spark分布式计算,通常⽤来检验开发出来的程序逻辑上有没有问题。其中N代表可以使⽤N个线程,每个线程拥有⼀个core。这些任务的线程,共享在⼀个进程中,可以开到,在程序的执⾏过程中只会产⽣⼀个进程,这个进程揽下了所有的任务,既是客户提交任务的client进程,⼜是spark的driver程序,还是spark执⾏task的executor本地模式: 测试或实验性质的本地伪集群运⾏模式(单机本地模拟集群)这种运⾏模式,和Local[N]很像,不同的是,它会在单机启动多个进程来模拟集群下的分布式场景,⽽不像Local[N]这种多个线程只能在⼀个进程下委屈求全的共享资源。通常也是⽤来验证开发出来的应⽤程序逻辑上有没有问题,或者想使⽤Spark的计算框架⽽没有太多资源。⽤法:提交应⽤程序时使⽤local-cluster[x,y,z]参数:x代表要⽣成的executor数,y和z分别代表每个executor所拥有的core和memory数。$ spark-submit --master local-cluster[2,3,1024] 上⾯这条命令代表会使⽤2个executor进程,每个进程分配3个core和1G的内存,来运⾏应⽤程序。可以看到,在程序执⾏过程中,会⽣成如下⼏个进程:
发布者:admin,转转请注明出处:http://www.yc00.com/web/1690379519a340690.html
评论列表(0条)