设备:
三台虚拟机:master0,slave1,slave2
192.168.56.132 master0
192.168.56.131 slave1
192.168.56.133 slave2
软件版本:
hadoop-2.9.0.tar.gz
jdk-8u201-linux-x64.tar.gz
链接: https://pan.baidu.com/s/1Bog6Hc77VOCUVCf1S3foaA 提取码: 22y4
搭建过程:
首先要给3台虚拟机master0、salve1、slave2配置静态IP地址,因为每次启动虚拟机,VMWare都为虚拟机系统分配动态 IP,那么各节之间的地址-域名就无法固定,hadoop运行时就无法访问salve1,slave2节点。
输入命令:
sudo vi /etc/network/interfaces
master0配置如下,slave1,slave2根据各自情况配置:
#interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto ens33iface ens33 inet static
#ip地址
address 192.168.56.132
netmask 255.255.255.0#网关,一般是ip地址前三位加上.2
gateway 192.168.56.2dns-nameservers 8.8.8.8
配置完成后重启网络:
sudo service networking restart
关于免密登录的原理,在鸟哥的linux教程中讲的很详细。(http://linux.vbird.org/linux_server/0310telnetssh.php#ssh_nopasswd)
以master0为例,其它节点的操作相同。
步骤1:在hosts文件中配置好各子节点的ip地址以及名称
步骤2:要想用root用户ssh登录这台机器(master0),必须修改ssh的配置文件。
登录root用户
su root
打开 /etc/ssh/ 路径下,sshd_config文件
gedit /etc/ssh/sshd_config
步骤3:在root用户下输入如下命令:
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub root@machine*
(machine* 代表设备的名字,这里要输入3次)
即master0这台机器上输入三次命令:
ssh-copy-id -i ~/.ssh/id_rsa.pub root@master0
ssh-copy-id -i ~/.ssh/id_rsa.pub root@slave1
ssh-copy-id -i ~/.ssh/id_rsa.pub root@slave2
得到以上结果,证明master0可以免密登录master0。
至此,master0可以免密登录localhost,slave1,slave2。
【slave1,slave2的操作和master0一模一样】
可以在windows下载 hadoop-2.9.0.tar.gz 和 jdk-8u201-linux-x64.tar.gz ,然后通过xshell传到master0上。
步骤1
在Ubuntu下解压 hadoop:
sudo tar zxvf hadoop-2.9.0.tar.gz -C /usr/local/hadoop
将java安装到 /usr/lib/jdk 目录下
sudo tar zxvf jdk-8u201-linux-x64.tar.gz -C /usr/lib/jdk
步骤2 登录root用户并修改 /etc/profile
vim ~/.barshrc
添加如下
#jdk 环境配置
export Java_HOME=/usr/lib/jdk/jdk1.8.0_201
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
#Hadoop环境
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.9.0
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$PATH
sudo source ~/.bashrc
环境变量生效,至此hadoop和java的环境搭建完毕。
{关于配置环境变量的一点体会}
在Linux下安装程序,最后都需要配置环境变量,才可以方便使用。各种教程中会出现修改 profile 文件或 bashrc文件,那么这两种不同的配置方法到底有什么不同呢?
请看两者的差异。参考https://www.cnblogs.com/probemark/p/5886766.html
• bashrc和profile的差异
从上面的英文描述可以知道,bashrc和profile的差异在于:
1. bashrc是在系统启动后就会自动运行。
2. profile是在用户登录后才会运行。
3. 进行设置后,可运用source bashrc命令更新bashrc,也可运用source profile命令更新profile。
#可以通过 hadoop检查是否安装成功
hadoop
#通过java -version 检查是否安装成功
java -version
tips:当一台机器安装好hadoop和java之后,可以通过scp将它们传到其它机器。但不推荐这么做,因为把hadoop传输过去,实在太慢了。还不如自己安装。
scp -r /usr/local/hadoop/ root@slave1:/usr/local/hadoop
不需要每台机器都配置hadoop文件,只需要配置好master0上的hadoop文件,然后通过scp命令全部传到slave1,slave2上即可。
hadoop配置下主要注意配置文件路径的问题
主要包括:hadoop根目录下 /etc/hadoop 里面的xml配置文件
配置这5个文件:hadoop-env.sh , hdfs-site.xml, mapred-site.xml , core-site.xml , yarn-site.xml
#注意!!!一下master0需要替换成,自己设置的主节点的名字。
配置文件1:hadoop-env.sh
export Java_HOME=/usr/lib/jdk/jdk1.8.0_201
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.9.0
export PATH=$PATH:/usr/local/hadoop/hadoop-2.9.0/bin
配置文件2:core-site.xml
#注意!!!这里的master0需要替换成,自己设置的主节点的名字。
fs.default.name
hdfs://master0:8020
io.file.buffer.size
131072
hadoop.tmp.dir
/home/hadoop/tmp
hadoop.proxyuser.hadoop.hosts
*
hadoop.proxyuser.hadoop.group
*
dfs.permissions
false
配置文件3:hdfs-site.xml
dfs.namenode.secondary.http-address
master0:9000
dfs.namenode.name.dir
file:/home/hadoop/dfs/name
dfs.datanode.data.dir
file:/home/hadoop/dfs/data
dfs.replication
3
dfs.webhdfs.enabled
true
配置文件4:mapred-site.xml
mapreduce.framework.name
yarn
mapred.job.tracker
master0:9001
mapred.job.tracker.http.address
master0:50030
mapreduce.jobhistory.address
master0:10020
mapreduce.jobhistory.webapp.address
master0:19888
配置文件5:yarn-site.xml
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
yarn.resourcemanager.address
master0:8032
yarn.resourcemanager.scheduler.address
master0:8030
yarn.resourcemanager.resource-tracker.address
master0:8031
yarn.resourcemanager.admin.address
maste0r:8033
yarn.resourcemanager.webapp.address
maste0r:8088
注意!如果是master节点需要添加多一个slaves文件指定slave
配置文件6:slaves (选)
slave1 192.168.56.131
slave2 192.168.56.133
最后通过scp命令将配置文件传到每一个节点上。
scp -r /usr/local/hadoop/hadoop-2.9.0/etc/hadoop root@slave*:/usr/local/hadoop/hadoop-2.9.0/etc/hadoop
slave*表示其它节点,以上命令的意思是,将/usr/local/hadoop/hadoop-2.9.0/etc/hadoop 目录下的全部文件传到,slve*的/usr/local/hadoop/hadoop-2.9.0/etc/hadoop中。
文件配置完成后,打开终端窗口,输入
hadoop namenode -format
若结果如下,没有JAVA报错,即说明hadoop namenode节点初始化成功。
打开终端利用cd命令进入hadoop启动命令文件如下:
cd /usr/local/hadoop/hadoop-2.7.3/sbin
键入如下命令启动hadoop集群。
./start-all.sh
终端出现如下结果,说明集群启动成功
通过jps查看节点启动情况。
参考:
[1]
作者:NullSpider
链接:https://juejin.im/post/5a17d24d6fb9a0452577cdfb
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
[2]
作者:KayleZhuang
链接:https://blog.csdn.net/seiulaomi/article/details/64920287