准备各种安装包
参考了两篇文章:
https://blog.csdn.net/ms961516792/article/details/79115383
https://blog.csdn.net/wy250229163/article/details/52729608/
我安装包链接:https://pan.baidu.com/s/1Sdqzjh9U7-fL5RnQf0XKzA 密码:l9za
安装一个文件传输包lrzsz
不需要安装Xftp,因为我的Xftp试用期过了不想破解了,lrzsz可以实现虚拟机和我pc的文件传送在终端中,输入命令:
sudo apt-get install lrzsz
使用说明:
sz命令 发送文件到本地:
sz filename
rz命令 将本地上传文件到服务器,服务器就是虚拟机,本地就是电脑端
rz
执行该命令后,在弹出框中选择要上传的文件即可。
安装SSH服务
为连接Xshell做准备的
sudo apt-get install openssh-server
安装jdk(java)
在虚拟机里面安装java需要rz上传jdk到虚拟机,建立Java目录,把java解压到/usr/local/java 目录
sudo mkdir /usr/local/java //jdk解压目录
sudo tar xvf jdk-8u25-linux-x64.tar.gz -C /usr/local/java //解压
安装Scala
上传Scala并解压到/usr/local/scala
sudo mkdir /usr/local/scala
sudo tar -zxvf scala-2.12.4.tgz -C /usr/local/scala
配置环境变量
先使用以下命令打开环境变量文件
sudo gedit ~/.bashrc
在文件的末尾追加以下代码:
注意!!!!!!!!!!!
修改/usr/local/这里的路径啊
//jdk
export JAVA_HOME=/usr/local/java/jdk1.8.0_161
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
//scala
export SCALA_HOME=/usr/local/scala/scala-2.10.5
export PATH=${SCALA_HOME}/bin:$PATH
//spark
export SPARK_HOME=/usr/local/spark/spark-1.6.1-bin-hadoop2.6
export PATH=${SPARK_HOME}/bin:$PATH
保存并退出,在终端中输入以下代码使修改生效:
source ~/.bashrc
测试
java测试
scala测试
spark测试
图是别人的
修改本机名称
把ubuntu修改为master
sudo gedit /etc/hostname
修改hosts文件
sudo vi /etc/hosts
下面的master是本机的ip地址
10.1.1.100 master
10.1.1.101 slave1
10.1.1.102 slave2
克隆主机
在VMware克隆主机即可,在 master,slave2和slave1更改hosts文件就是上面的(10.1.1.*),在slave2和slave1该主机名称(master的名称不用改)。
修改之后ping 一下各个ip
ping slave1,ping slave2,ping master
配置master与slave
分别在master,slave2和slave1使用:
一直按回车飘过就行,
ssh-keygen -t rsa
注意ssh-keygen -t rsa执行完后它会告诉你在哪里生成了文件,一般在/.ssh,cd到/.ssh
把slave1与slave2上的id_rsa.pub用scp命令发送给master,
scp id_rsa.pub yanghe@master:~/.ssh/id_rsa.pub.slave1
scp id_rsa.pub yanghe@master:~/.ssh/id_rsa.pub.slave2
在master上,将所有公钥加到用于认证的公钥文件authorized_keys中
cat ~/.ssh/id_rsa.pub* >> ~/.ssh/authorized_keys
在master上,将公钥文件authorized_keys分发给每台slave:
scp ~/.ssh/authorized_keys yanghe@slave1:~/.ssh/
scp ~/.ssh/authorized_keys yanghe@slave2:~/.ssh/
检查是否免密码登陆
SSH master
SSH slave1
SSH slave2
安装和配置hadoop
上传hadoop包到master上,在master上执行如下:
sudo mkdir /usr/local/hadoop
sudo tar -zxvf hadoop-2.6.4.tar.gz -C /usr/local/hadoop
进入“/usr/local/hadoop/hadoop-2.6.4/etc/hadoop”目录,对以下文件进行配置进行配置:hadoop-env.sh
vim hadoop-env.sh
下文中遇到//hadoop-env.sh等类似写法,就是用vim 进行编辑
在hadoop-env.sh里面设置JAVA_HOME
//hadoop-env.sh
export JAVA_HOME=/usr/local/hadoop/hadoop-2.6.4/jdk1.8.0_165
在yarn-env.sh里面设置JAVA_HOME
//yarn-env.sh
export JAVA_HOME=/usr/local/hadoop/hadoop-2.6.4/jdk1.8.0_165
在slaves这个文件里面加入作为slave的IP地址或者对应的hosts映射名字。
//slaves(把文件里的localhost删掉)
slave1
slave2
core-site.xml 。注意到底下的目录,如果软件内没有tmp,则自己创建。
//core-site.xml(自行设计路径,文件夹需要自己手动创建)
fs.defaultFS
hdfs://master:9000/
hadoop.tmp.dir
file:/home/lch/hadoop264/tmp
hdfs-site.xml。注意到底下的目录,如果软件内没有/dfs/name以及/dfs/data,则自己创建。
//hdfs-site.xml(自行设计路径,文件夹需要自己手动创建)
dfs.namenode.secondary.http-address
master:9001
dfs.namenode.name.dir
file:/home/lch/hadoop264/namenode
dfs.datanode.data.dir
file:/home/lch/hadoop264/datanode
dfs.replication
3
dfs.webhdfs.enabled
true
mapred-site.xml,在当前路径下有mapred-site.xml.template文件。copy一份去掉.template后缀也可以
cp mapred-site.xml.template mapred-site.xml
(不用改)就是粘贴即可。
//mapred-site.xml(不用改)
mapreduce.framework.name
yarn
yarn-site.xml编辑。
//yarn-site.xml(不用改)
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
yarn.resourcemanager.address
master:8032
yarn.resourcemanager.scheduler.address
master:8030
yarn.resourcemanager.resource-tracker.address
master:8035
yarn.resourcemanager.admin.address
master:8033
yarn.resourcemanager.webapp.address
master:8088
设置一下权限
在两台slave中创建和master一致的hadoop文件夹,并在三台机器中均使用以下命令进行文件夹的权限设置:
sudo chmod -R 777 /usr/local/hadoop
分发系统
在master上将配置好的hadoop-2.6.4文件夹分发给所有slave
scp -r /usr/local/hadoop/hadoop-2.6.4 yanghe@slave1:/usr/local/hadoop/
scp -r /usr/local/hadoop/hadoop-2.6.4 yanghe@slave2:/usr/local/hadoop/
测试hadoop的伪集群
在master上,
使用cd命令切换到hadoop主目录,格式化namenode后,启动:
./bin/hadoop namenode -format
./sbin/start-all.sh
用用jps命令查看hadoop进程。 在master上应该有:
jps
master上有
3407 SecondaryNameNode
3218 NameNode
3552 ResourceManager
3910 Jps
在slave1与slave2上应该有:
4642 Jps
4523 DataNode
4606 NodeManager
如图(master),我这里有个SecondaryNameNode没启动:
(在slave1上)
在master的浏览器上输入master:8088,能够访问hadoop管理界面,并看到slaves的存在
master:8088
配置spark
在slave上使用如下命令将两台slave中的spark文件删除(一会再从master传过来)
sudo rm -rf /usr/local/spark/spark-1.6.1-bin-hadoop2.6
在master上cd到spark的根目录下的conf目录中,在此目录下,可以看到很多配置文件。但是很多文件都是以template结尾的,这是因为spark给我们提供的模板配置文件,我们可以拷贝一份,然后将.template给去掉,添加一下代码到末尾.
//spark-env.sh
export SCALA_HOME=/usr/local/scala/scala-2.10.5
export JAVA_HOME=/usr/local/java/jdk1.8.0_161
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.6.4
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SPARK_MASTER_IP=master
export MASTER=spark://192.168.86.128:7077
export SPARK_LOCAL_DIRS=/usr/local/spark/spark-1.6.1-bin-hadoop2.6
export SPARK_DRIVER_MEMORY=512M
slaves,在这个文件里把slaves的hosts里的映射名添加进去。
slave1
slave2
最后就可以将配置好的spark-2.0.0-bin-hadoop2.7文件夹分发给所有slave了
scp -r ~/software/spark-2.0.0-bin-hadoop2.7 yanghe@slave1:~/software/
scp -r ~/software/spark-2.0.0-bin-hadoop2.7 yanghe@slave2:~/software/
启动Spark,cd到spark主目录,然后
sbin/start-all.sh
在master上jps出现
7805 Master
在slaves上jps出现
3759 Worker
同样的master:8080 能够访问spark管理界面,并看到slaves的存在
集群测试。
在spark启动成功后,在master的终端中cd到spark根目录,执行以下代码(spark自带的一个例子),出现结果即为成功:
./bin/run-example org.apache.spark.examples.SparkPi