以前有个的账号的,结果记不清密码和账户名了,所以重新注册了一个。
搭建了多次的Spark平台,每次搭建都是直接临时百度,导致搭建时的注意点和知识点非常的零散,每次出状况了再去查找相关的问题答案。这次终于自己买了台全新的机子,有机会再搭建一遍,这次下定决定写个文档,为了方便以后的工作。好了,接下来就是直接记录过程了:
准备步骤:
1.先用虚拟机搭建CentOS系统:CentOS 7 64位,使用镜像文件CentOS-7-x86_64-DVD-1804.iso,因为搭集群环境,所以可以开3台虚拟机,一台主节点,两台从节点,我开了3台虚拟机,虚拟机搭建此处省略。
2.下载jdk-8u171-linux-x64.tar.gz、spark-2.3.1-bin-hadoop2.7.tgz、hadoop-2.7.6.tar.gz文件,为了后面便于区分文件,在/usr的文件目录下分别建立java,spark,hadoop文件夹存放。下载的Spark和hadoop的包要根据官网来下载匹配版本。
3.解压文件到当前目录:tar -zxvf *
4.配置jdk:注意更改Linux中自带的openjdk为自己安装的jdk,更改用到的命令--{sudo update-alternatives --install /usr/lib/java java /usr/lib/jvm/jdk1.7.0_17/bin/java 300}{sudo update-alternatives --install /usr/lib/javac javac /usr/lib/jvm/jdk1.7.0_17/bin/javac 300}{sudo update-alternatives --config java}
前面两个命令中第一文件路径是系统默认的java安装路径,第二个文件路径是自定义安装的java文件路径
搭建集群:
1.修改主机名称
2.在主节点的/etc/hosts文件中添加主节点的ip和主机名及各个从节点的ip和主机名
3.在各个节点中执行:ssh-keygen -t rsa 然后执行不断回车,然后执行{cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys} {chmod 600 ~/.ssh/authorized_keys}(该步骤生成公钥和私钥)
4.在master节点执行{scp /root/.ssh/id_rsa.pub root@slave1:/root/.ssh/id_rsa.pub.master} {scp /root/.ssh/id_rsa.pub root@slave2:/root/.ssh/id_rsa.pub.master}将主节点的公钥传到从节点上,注意如果scp出现Permission denied, please try again权限不足情况,需要进入两个从节点的/etc/ssh/sshd_config文件下,将PermitRootLogin yes这句代码取消注释即可。然后将主节点中的/etc/hosts文件也传给其他两个节点供其它节点通过host名字识别。
5.在主节点执行{cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys #master}在从节点执行{cat /root/.ssh/id_rsa.pub.master >> /root/.ssh/authorized_keys}这样主节点就可以免密码登陆从节点
6.对各个节点安装Scala:从scala官网下载scala版本的rpm文件存入/usr/scala文件夹中,使用rpm -ivh scala-2.12.2.rpm命令进行默认安装,然后添加SCALA_HOME的环境变量
7.修改环境变量,添加{export HADOOP_HOME=/usr/hadoop/hadoop-2.7.6/}{export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop}{export YARN_CONF_DIR=${HADOOP_HOME}/etc/hadoop}{export PATH=$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin}
8.修改HADOOP_HOME/etc/hadoop文件夹下的hadoop-env.sh和slaves文件,将hadoop-env.sh中的JAVA_HOME地址改成自定义java安装的绝对路径地址,将slaves文件中添加两个从节点的主机名 9.修改core-site.xml,hdfs-site.xml,mapred-site.xml,yarn-site.xml文件,最后格式化namenode {hadoop namenode -format}
core-site.xml
hdfs-site.xml
mapred-site.xml
yarn-site.xml
10.复制master节点的hadoop文件夹到slave1,slave2文件夹内,{scp -r hadoop-2.7.6 root@slave2:/usr/hadoop/}并且slave1,slave2修改/etc/profile文件同master一样
11.各个节点修改相应的配置文件,添加SPARK_HOME等环境变量,修改spark-env.sh,slaves文件,并将/usr/spark/文件下的所有文件传到其他从节点, spark-env.sh
cp spark-env.sh.template spark-env.sh
spark-env.sh
export SCALA_HOME=/usr/share/scala
export JAVA_HOME=/usr/java/jdk1.8.0_171
export SPARK_MASTER_IP=master
export SPARK_WORKER_MEMORY=1g
export HADOOP_CONF_DIR=/usr/hadoop/hadoop-2.7.6/etc/hadoop
export HADOOP_HOME=/usr/hadoop/hadoop-2.7.6
export SPARK_HOME=/usr/spark/spark-2.3.1-bin-hadoop2.7
export SPARK_WORKER_CORES=1
slaves
master
slave1
slave2
scp -r spark-2.3.1-bin-hadoop2.7 root@slave2:/usr/spark/
12.一定要记住关闭各个节点的防火墙,否则会出现只能启动主节点,从节点无法启动的现象。
经过以上的步骤终于把集群环境搭好了,如下图所示: