处理器:Intel® Core™ i5-7200U CPU @2.50GHZ 2.71GHZ
主机操作系统:Windows 10,64位
内存: 16G
虚拟软件:VMware Workstation Pro 15
虚拟机操作系统:ubuntu 18.04(64位), 4G内存
虚拟机运行环境:
VMware Workstation Pro 15
卡号:ZG50K-0VF80-4892Q-YGYNV-PLKE4
卡号:FU748-2FX5H-M85ZZ-EMPQC-WF8R0
卡号:YC7HK-FQG90-0883Y-ZYZ7E-Q28ZD
阿里云镜像下载
ubuntu 14.04: http://mirrors.aliyun.com/ubuntu-releases/14.04/
ubuntu 16.04: http://mirrors.aliyun.com/ubuntu-releases/16.04/
ubuntu 18.04: http://mirrors.aliyun.com/ubuntu-releases/18.04/
序号 | IP地址 | 主机名 | 系统 | User |
---|---|---|---|---|
1 | 192.168.153.100 | Master | Ubuntu18.04 | todd |
2 | 192.168.153.101 | Slaver1 | Ubuntu18.04 | todd |
3 | 192.168.153.102 | Slaver2 | Ubuntu18.04 | todd |
VMware官网下载地址:http://www.vmware.com,最上面有我用的激活号码。安装过程较简单,没有问题。
auto lo
iface lo inet loopback
auto ens33
iface ens33 inet static
address 192.168.153.100
netmask 255.255.255.0
gateway 192.168.153.2
dns-nameservers 223.5.5.5 #解决Ubuntu下 /etc/resolv.conf文件总是自动清除问题的解决方案
注意:系统的不同,上面的网卡端口信息可能会不一样。使用ifconfig命令对相关信息进行查看。
nameserver 223.5.5.5。
可以参考使用VMware进行基于Ubuntu16.04LTS的Spark集群搭建
192.168.153.100 Master
192.168.153.101 Slaver1
192.168.153.102 Slaver2
修改完成后保存执行如下命令:source /etc/hosts
4. 关闭虚拟机,在Vmware界面对Master进行克隆,克隆出两个节点Slaver1和Slaver2。
5. 在每个机器上使用以下命令修改本机名称:sudo gedit /etc/hostname。分别改成Master,Slaver1,Slaver2。
6. 在每个机器的/etc/network/interfaces中,按照2.2.2中所示,将机器的ip设置为static,并分别分配固定ip。分别为:192.168.153.100,192.168.153.101,192.168.153.102。
7. 对虚拟机进行重启,使相关配置生效。
su root
cd /root/.ssh
ssh-keygen -t rsa #产生公钥与私钥对,执行三次回车
ssh-copy-id -i /root/.ssh/id_rsa.pub Master #用ssh-copy-id将公钥复制到远程机器中,ssh-copy-id 将key写到远程机器的 ~/ .ssh/authorized_key.文件中
ssh-copy-id -i /root/.ssh/id_rsa.pub Slaver1
ssh-copy-id -i /root/.ssh/id_rsa.pub Slaver2
ssh Slaver1(ssh root@Slaver1)。
cd /usr
mkdir java
sudo tar -zxvf jdk-8u8201-linux-x64.tar.gz
export JAVA_HOME=/usr/java/jdk1.8.0_201
export CLASSPATH=:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
source /etc/profile
java -version
sudo tar -zxvf scala-2.11.8.tgz
export SCALA_HOME=/usr/scala-2.11.8
export PATH=$PATH:$SCALA_HOME/bin
source /etc/profile
scala -version
可以参考Hadoop2.7.3+Spark2.1.0完全分布式集群搭建过程
mv hadoop-2.6.5.tar.gz
tar -zxvf hadoop-2.6.5.tar.gz
export HADOOP_HOME=/usr/hadoop-2.6.5
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
mkdir tmp
mkdir hdfs
mkdir hdfs/name
mkdir hdfs/data
export JAVA_HOME=/usr/java/jdk1.8.0_201
Slaver1
Slaver2
fs.defaultFS
hdfs://Master:9000
io.file.buffer.size
131072
hadoop.tmp.dir
/usr/hadoop-2.6.5/tmp
dfs.namenode.secondary.http-address
Master:50090
dfs.replication
2
dfs.namenode.name.dir
file:/usr/hadoop-2.6.5/hdfs/name
dfs.datanode.data.dir
file:/usr/hadoop-2.6.5/hdfs/data
cp mapred-site.xml.template mapred-site.xml
修改$HADOOP_HOME/etc/hadoop/mapred-site.xml
mapreduce.framework.name
yarn
mapreduce.jobhistory.address
Master:10020
mapreduce.jobhistory.address
Master:19888
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.address
Master:8032
yarn.resourcemanager.scheduler.address
Master:8030
yarn.resourcemanager.resource-tracker.address
Master:8031
yarn.resourcemanager.admin.address
Master:8033
yarn.resourcemanager.webapp.address
Master:8088
tar -zxvf spark-2.2.3-bin-hadoop2.6.tgz
export SPARK_HOME=/usr/spark-2.4.0-bin-hadoop2.6/
export PATH=$PATH:$SPARK_HOME/bin
cp spark-env.sh.template spark-env.sh
修改$SPARK_HOME/conf/spark-env.sh,添加如下内容:
export SCALA_HOME=/usr/scala-2.11.8
export JAVA_HOME=/usr/java/jdk1.8.0_201
export HADOOP_HOME=/usr/hadoop-2.6.5
export SPARK_WORKER_MEMORY=1g
export HADOOP_CONF_DIR=/usr/hadoop-2.6.5/etc/hadoop
cp slaves.template slaves
修改$SPARK_HOME/conf/slaves,添加如下内容:
Master
Slaver1
Slaver2
scp -r /usr/java root@Slaver1:/usr
scp -r /usr/scala-2.11.8 root@Slaver1:/usr
scp -r /usr/hadoop-2.6.5 root@Slaver1:/usr
scp -r /usr/spark-2.2.3-bin-hadoop2.6 root@Slaver1:/usr
scp -r /etc/profile root@Slaver1:/etc/profile
scp -r /usr/java root@Slaver2:/usr
scp -r /usr/scala-2.11.8 root@Slaver2:/usr
scp -r /usr/hadoop-2.6.5 root@Slaver2:/usr
scp -r /usr/spark-2.2.3-bin-hadoop2.6 root@Slaver2:/usr
scp -r /etc/profile root@Slaver2:/etc/profile
ssh Slaver1
source /etc/profile
exit
ssh Slaver2
source /etc/profile
exit
hadoop namenode -format
启动:
/usr/hadoop-2.6.5/sbin/start-all.sh
查看Hadoop是否启动成功,输入命令:jps
Master显示:SecondaryNameNode,ResourceManager,NameNode。
Slaver显示:NodeManager,DataNode。
在Master节点启动Spark:/usr/spark-2.4.0-bin-hadoop2.6/sbin/start-all.sh
查看Spark是否启动成功,输入命令:jps
Master在Hadoop的基础上新增了:Master。
Slaver在Hadoop的基础上新增了:Worker。
集群测试。在spark启动成功后,执行以下代码(spark自带的一个例子),出现结果即为成功:$SPARK_HOME/bin/spark-submit --class org.apache.spark.examples.SparkPi --master local /usr/spark-2.2.3-bin-hadoop2.6/examples/jars/spark-examples_2.11-2.2.3.jar(./bin/run-example org.apache.spark.examples.SparkPi)
错误及解决方案1:hadoop在子节点上没有datanode进程。1)先停止Hadoop,bin/stop-all.sh
2)三台机器都把hadoop1.2.1/tmp下所有文件删除,rm -rf tmp/* 3)重新格式化hadoop namenode -format 4)再重启bin/start-all.sh 5)查看各节点jps,就有DataNode了。在这之前最好查看下每个节点的/etc/hosts文件是否正确。
错误及解决方案2:hadoop集群启动之后,datanode进程未启动解决办法。一般是开启一次hadoop集群,重新 hadoop namenode -format就会出现问题。可以参考hadoop集群启动之后,datanode进程未启动解决办法。
Spark源码使用maven构建的,所以在编译之前我们需要下载一个maven。
sudo gedit /etc/profile
添加如下内容:
#maven
export MAVEN_HOME=/usr/apache-maven-3.3.9
export PATH=\$PATH:\$MAVEN_HOME/bin
export MAVEN_OPTS="-Xmx2048m -XX:MetaspaceSize=1024m -XX:MaxMetaspaceSize=1524m -Xss2m"
export PATH=\$PATH:\$MAVEN_HOME/bin
虚拟机推荐设置内存4G,一定要大于MAVEN_OPTS中设置的最大内存。
alimaven
aliyun maven
http://maven.aliyun.com/nexus/content/groups/public/
central
./build/mvn -Pyarn -Phadoop-provided -Phive -Phive-thriftserver -Pnetlib-lgpl -DskipTests clean package
可以参考idea打spark jar包并提交到spark集群运行
sudo mkdir /usr/local/sbt
sudo chown -R hadoop /usr/local/sbt # 此处的 hadoop 为你的用户名
cd /usr/local/sbt
cp ~/下载/sbt-launch.jar .
#!/bin/bash
SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
java $SBT_OPTS -jar `dirname $0`/sbt-launch.jar "$@"
chmod u+x ./sbt
./sbt sbt-version