免密登录配置
1 所有节点生成密钥
ssh-keygen -t rsa# 一直回车,使用默认配置#根目录查看.ssh文件ls -atrl
.ssh文件夹目录说明:
id_rsa:私钥
id_rsa.pub:公钥
2 主节点生成认证文件
cat .ssh/id_rsa.pub >> .ssh/authorized_keys#认证文件authorized_keys保存所有节点的公钥#221-223do i in {1..2}; ssh 192.168.23.22$i cat .ssh/id_rsa.pub >> .ssh/authorized_keys;done#216ssh 192.168.23.216 cat .ssh/id_rsa.pub >> .ssh/authorized_keys;#将认证文件复制到所有节点do i in {1..2}; scp .ssh/authorized_keys pjb@192.168.23.22$i:/home/pjb/.ssh/authorized_keysdone#216scp .ssh/authorized_keys pjb@192.168.23.216:/home/pjb/.ssh/authorized_keys
3 所有节点授权
#授权chmod -R 700 .sshchmod -R 600 .ssh/authorized_keys# 验证ssh 192.168.23.222
zookeeper集群搭建
1 下载
zookeeper官网:https://zookeeper.apache.org/releases.html
zookeeper安装包:apache-zookeeper-3.5.7-bin.tar.gz
2 上传服务器
将zookeeper安装包上传到各个节点:192.168.23.221-223
3 安装
1)准备工作
#解压tar -zxvf apache-zookeeper-3.5.7-bin.tar.gzcd apache-zookeeper-3.5.7-bin#创建数据和日志目录mkdir datamkdir logs#复制生成zoo.cfg文件cd confcp zoo_sample.cfg zoo.cfg
2)修改zoo.cfg文件
#数据和日志目录dataDir=/home/pjb/bigdata/apache-zookeeper-3.5.7-bin/datadataLogDir=/home/pjb/bigdata/apache-zookeeper-3.5.7-bin/logs#所有节点server.1=KUD01:2888:3888server.2=KUD02:2888:3888server.3=KUD03:2888:3888
3)创建myid文件
根据zoo.cfg中各个节点配置myid信息,即:server.myid编号,在各个节点的data目录下创建myid文件
#在192.168.23.221cd /home/pjb/bigdata/apache-zookeeper-3.5.7-bin/dataecho 1 >> myid#192.168.23.222,192.168.23.223分别是:echo 2 >> myid,echo 3 >> myid
4)启动
在各个节点执行
cd /home/pjb/bigdata/apache-zookeeper-3.5.7-bin/bin#启动zookeeper./zkServer.sh start#查看集群状态./zkServer.sh status#1个主节点,2个从节点#1台: Mode: leader 2台:Mode: follower
spark集群规格spark集群规格
1 下载
spark官网:http://spark.apache.org/
spark安装包:spark-2.4.5-bin-hadoop2.7.tgz
2 安装配置
1)修改spark-env.sh文件
export JAVA_HOME=/usr/java/jdk1.8.0_172#SPARK_MASTER_HOST=192.168.23.221#PARK_MASTER_PORT=7077export SPARK_DAEMON_JAVA_OPTS=" -Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=KUD01,KUD02,KUD03 -Dspark.deploy.zookeeper.dir=/spark-info"
2)将spark-env.sh复制到其他所有节点
3)启动主节点(192.168.23.221)
cd /home/pjb/bigdata/spark-2.4.5-bin-hadoop2.7/sbin./start-all.sh
4)启动备份主节点(192.168.23.216)
cd /home/pjb/bigdata/spark-2.4.5-bin-hadoop2.7/sbin./start-master.sh
5)验证
主节点:http://192.168.23.221:8080/
spark管理页面
备份主节点:http://192.168.23.216:8080/
spark管理页面
提交一个spark应用到spark集群运行
cd /home/pjb/bigdata/spark-2.4.5-bin-hadoop2.7./bin/spark-submit --master spark://KUD01:7077,HSlave02:7077 --class org.apache.spark.examples.SparkPi --executor-memory 2048mb --total-executor-cores 12 examples/jars/spark-examples_2.11-2.4.5.jar 1000
--executor-memory 每个executor使用的内存大小
--total-executor-cores 整个app使用的核数
运行spark shell
spark-shell是一个交互式的命令行,里面可以写spark程序,方便学习和测试,它也是一个客户端,用于提交spark应用程序
1 local模式
/bigdata/spark-2.4.5-bin-hadoop2.7/bin/spark-shell
上面的方式没有指定master的地址,即用的是spark的local模式运行的(模拟的spark集群运行的过程)
2 集群模式
/bigdata/spark-2.4.5-bin-hadoop2.7/bin/spark-shell --master spark://KUD01:7077,192.168.23.216:7077
上面是指定了master的地址,那么就会将任务提交到集群,开始时sparksubmit(客户端)要连接Master,并申请计算资源(内存和核数),Master进行资源调度(就是让那些Worker启动Executor),在准备工作时,这些进程都已经创建好了
spark-shell
3 完成WordCount
sc.textFile("hdfs://KUD01:9000/spark/test").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).sortBy(_._2,false).collect