三台机子,系统为ubuntu14.01,公用一个路由器组成一个小型局域网。
首先配置固定的ip地址。
点击屏幕右上方的网络连接,Edit Connections -> Add -> 类型选Ethernet -> Create -> 选择IPv4 Setting -> Method选择 Manual(手动)-> Add
对于可以填什么,可以点开网络连接处的Connection Information,对应着填入。
修改hosts文件
三台机子都要修改hosts文件:
sudo gedit /etc/hosts
在原文件后面加上:
192.168.1.102 Master
192.168.1.104 Slave1
192.168.1.105 Slave2
使配置文件生效:
source /etc/hosts
ssh无密码验证配置
安装ssh:sudo apt-get update
sudo apt-get install ssh
注意,以下操作均在root用户下执行,从普通用户跳到root可使用命令sudo su
配置Master无密码登陆slave
1、在Master节点上生成密码对ssh-keygen -t rsa -P ''
生成的密码对id_rsa和id_rsa.pub默认保存在/root/.ssh目录下
2、将id_rsa.pub追加到授权的key里面去
cat ~/.ssh/id_rsa.pub >> ~/.sh/authorized_keys
# ~/.ssh和/root/.ssh是同一个意思
3、修改ssh配置文件/etc/ssh/sshd_config里面的内容,将以下三行的注释去掉
RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)
4、验证无密码本地登陆:ssh localhost
5、把公钥复制到所有的Slave机器上。很多博客做这一步都是用以下两行命令:
scp /root/.ssh/id_rsa.pub root@Slave1:/root/.ssh/
scp /root/.ssh/id_rsa.pub root@Slave2:/root/.ssh/
但是我用这两行命令后会被提问slave1和slave2的密码,输密码后又permission denied,所以最后我直接用u盘拷贝的方法,把master的id_rsa.pub拷贝到其他两台机子的/root/.ssh/下面
接着配置slave节点,以slave1为例:
1、在/root/下面创建".ssh"文件:mkdir /root/.ssh
(注意slave此刻也在root用户下哦~)
2、将master的公钥追加到slave1的授权文件中去:
cat /roo/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
3、修改配置文件etc/ssh/sshd_config,同上面的3、4步。
4、最后删除master的公钥文件id_rsa.pub
用Master无密码登陆slave1,在master的终端上测试,成功的话,以下两条命令都可以登陆slave1:
ssh Slave1
ssh 192.168.1.104
同样的道理,想让A机无密码登录B机,就先在A机本地生成密码对(id_rsa.pub和id_rsa)。
把公钥id_rsa.pub追加到A机自身的授权文件authorized_keys中去,成功的话,ssh localhost
可以本地登录,然后将公钥放置到B机上,追加到B机的授权文件中去,由此A机就能登录B机,想让B机登录A机也是相同操作。
如此这番后,我的三台机子都可以互相无密码登录啦~
java和scala基础环境
这部分我就不写啦,下载相应的包,解压到指定路径并添加路径到配置文件/etc/profile。
hadoop完全分布式搭建
在master节点进行以下操作:
1、下载二进制包hadoop-2.6.5.tar.gz
2、解压并移动到对应的目录:tar -zxvf hadoop-2.6.5.tar.gz -C /opt/
3、修改配置文件,在上一步添加java/scala路径的配置文件中加入HADOOP_HOME及其路径,并source /etc/profile
保存
4、修改 $HADOOP_HOME/etc/hadoop/slaves,将原来的localhost删除并添加:
Slave1
Slave2
5、修改 $HADOOP_HOME/etc/hadoop/core-site.xml
(注意对应的hadoop路径和版本根据你自己放的位置来写)
fs.defaultFS
hdfs://Master:9000
io.file.buffer.size
131072
hadoop.tmp.dir
/opt/hadoop-2.7.3/tmp
6、修改 $HADOOP_HOME/etc/hadoop/hdfs-site.xml
dfs.namenode.secondary.http-address
Master:50090
dfs.replication
2
dfs.namenode.name.dir
file:/opt/hadoop-2.7.3/hdfs/name
dfs.datanode.data.dir
file:/opt/hadoop-2.7.3/hdfs/data
7、重命名template: cp mapred-site.xml.template mapred-site.xml
并修改内容:
mapreduce.framework.name
yarn
mapreduce.jobhistory.address
Master:10020
mapreduce.jobhistory.address
Master:19888
8、修改 $HADOOP_HOME/etc/hadoop/yarn-site.xml
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
9、复制Master节点的hadoop文件夹到Slave1和Slave2上。
scp -r /opt/hadoop-2.7.3 root@Slave1:/opt
scp -r /opt/hadoop-2.7.3 root@Slave2:/opt
10、修改Slave1和Slave2上的配置文件,过程和Master的一样,添加路径即可
11、在master上启动集群
首先,格式化一下namenode: hadoop namenode -format
启动:/opt/hadoop-2.7.3/sbin/start-all.sh
接下来看到日志信息,hadoop的分布式就搭建成功了。
12、查看集群是否成功启动,输入jps
, master显示:
Slave1显示:
浏览器中输入:localhost:50070 可以看到hadoop中的Namenode Information :
spark分布式搭建
首先在master机子上进行操作
1、下载二进制包spark-2.4.0-bin-hadoop2.7.tgz
2、解压到指定位置tar -zxvf spark-2.4.0-bin-hadoop2.7.tgz -C /opt/
,我顺便重命名了cp spark-2.4.0-bin-hadoop2.7.tgz spark
3、修改配置文件/etc/profile 添加路径到SPARK_HOME
4、进入/opt/spark/conf,重命名spark-env.sh.template文件,并添加内容
cp spark-env.sh.template spark-env.sh
gedit spark-env.sh
--------------添加以下内容------------------
export JAVA_HOME=/opt/jdk1.8.0_191
export SCALA_HOME=/opt/scala-2.12.8
export SPARK_HOME=/opt/spark
export HADOOP_HOME=/opt/hadoop-2.6.5
export PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:${SCALA_PATH}/bin:${SPARK_HOME}/bin:
export SPARK_MASTER_IP=192.168.1.102 # 注意这里是你的master的ip哦
export SPARK_WORKER_MEMORY=2g
5、重命名slaves.template文件并添加内容
cp slaves.template slaves
--------------添加以下内容------------------
Master
Slave1
Slave2
6、将配置好的spark文件夹复制到另外两台机子上:scp /opt/spark root@Slave1:/opt
7、修改两台slave的配置文件/etc/profile,添加spark路径。同时注意,进入/opt/spark/conf,在spark-env.sh文件中将export SPARK_MASTER_IP=192.168.1.102
改为:export SPARK_LOCAL_IP=#这里是相应机子的IP
8、在master启动集群:/opt/spark/sbin/start-all.sh
9、查看集群是否成功启动:jps
这是在master上的结果,与上面对比,较hadoop多了一个Master:
这是在Slave1上的结果,比hadoop多了一个Worker:
spark集群的web端口:8080
启动和关闭hadoop/spark的命令
hadoop/sbin/start-all.sh
spark/sbin/start-master.sh
spark/sbin/start-slaves.sh
spark/sbin/stop-master.sh
spark/sbin/stop-slaves.sh
hadoop/sbin/stop-all.sh