1.先创建一个干净的虚拟机
1、虚拟机搭建一台Ubuntu16.04系统,root登录
2.·修改主机名为master vim /etc/hostname
修改本机的静态ip地址· vim /etc/network/interfaces
·重启网络生效:/etc/init.d/networking restart
·ifconfig看ip是否配置成功
3.addgroup hadoop
adduser --ingroup hadoop hadoop
添加Hadoop用户
3.使用xftp把hadoop,jdk压缩包发送到/home 目录下
4.在Hadoop用户下解压这两个文件
·tar -xvf hadoop… ·tar -xvf jdk…
rm -rf hadoop_home 删除原本的Hadoop_home 否则会有两层Hadoop_home目录
并将mv hadoop… hadoop_home jdk也是一样
5.开一个新的xshell,以root命令登录 并配置主从机的ip地址·定好三台机的静态ip vim /etc、hosts 并为从机node1 node2分配静态ip地址
6.设置环境变量vim ~/.profile,在末尾添加:
export JAVA_HOME=/home/hadoop/jdk1.8.0_181
export HADOOP_HOME=/home/hadoop/hadoop-2.7.2
export CLASSPATH=.: J A V A H O M E / l i b / d t . j a r : JAVA_HOME/lib/dt.jar: JAVAHOME/lib/dt.jar:JAVA_HOME/lib/tools.jar
export PATH= J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:HADOOP_HOME/bin: H A D O O P H O M E / s b i n : HADOOP_HOME/sbin: HADOOPHOME/sbin:PATH
7.重新应用环境变量:source ~/.profile
8.测试jdk是否安装成功:
java或者javac或者java -version显示当前版本
9.进入Hadoop_home cd hadoop_home
10.修改core-site文件 vim /etc/hadoop/core-site.xml
fs.defaultFS
hdfs://master:9000
hadoop.tmp.dir
file:/home/hadoop/hadoop_home/tmp
hadoop.native.lib
true
11.配置 hdfs-site.xml vim /etc/hadoop/hdfs-site.xml
dfs.replication
1
fs.trash.interval
0
dfs.namenode.name.dir
file:/home/hadoop/hadoop_home/dfs/name
dfs.namenode.data.dir
file:/home/hadoop/hadoop_home/dfs/name
dfs.namenode.secondary.http-address
master:9001
dfs.webhdfs.enabled
true
dfs.permissions.enabled
false
说明:
dfs.replication 数据副本的数量,默认三份
dfs.namenode.name.dirname 节点 hdfs 存储的位置
dfs.datanode.data.dirdata 节点 hdfs 存储的位置
dfs.namenode.secondary.http-address
secondarynamenode运行的机器,默认namenode和secondarynamenode
都在 master 上运行, 一般建议可配置 secondarynamenode 在其它
机器运行。
dfs.webhdfs.enabled 开启 webhdfs,访问文件、文件夹信息使用
namenode 的 IP 和端口,访问文件内容或者进行打开、上传、 修改、下载等
操作使用 datanode 的 IP 和端口。要想不区分端 口,直接使用 namenode 的
IP 和端口进行所有的 hdfs 操作,就 需要打开 webhdfs。
dfs.permissions 和 和 dfs.permissions.enabled 是否启动权限控制
修改bin下面的启动脚本,可以不启动secondarynamenode
start-dfs.sh
#---------------------------------------------------------
SECONDARY_NAMENODES= ( ( (HADOOP_PREFIX/bin/hdfs getconf -secondarynamenodes 2>/dev/null)
if [ -n “ S E C O N D A R Y N A M E N O D E S " ] ; t h e n e c h o " S t a r t i n g s e c o n d a r y n a m e n o d e s [ SECONDARY_NAMENODES" ]; then echo "Starting secondary namenodes [ SECONDARYNAMENODES"];thenecho"Startingsecondarynamenodes[SECONDARY_NAMENODES]”
“KaTeX parse error: Expected 'EOF', got '\ ' at position 39: …op-daemons.sh" \̲ ̲--config "HADOOP_CONF_DIR”
–hostnames “KaTeX parse error: Expected 'EOF', got '\ ' at position 22: …ARY_NAMENODES" \̲ ̲--script "bin/hdfs” start secondarynamenode
fi
我们看到上面代码部分,注释掉SecondaryNameNode就不会起来了(在做这个操作前,自己先备份一份)。
12.配置 mapred-site.xml
打开这个配置文件有点繁琐
Vim etc/hadoop/mapred- 此时按tab键
cp etc/hadoop/mapred-site.xml.template ctc/hadoop/mapred.xml
这时候可以粘蓝色命令下来 vim etc/hadoop/mapred-site.xml 打开
mapreduce.jobhistory.address
master:10020
mapreduce.jobhistory.webapp.address
master:19888
说明: mapreduce.framework.name 设置框架引擎,1.x 为 MR,2.x 改为 yarn mapreduce.jobhistory.address 设置历史服务器的地址和端口 mapreduce.jobhistory.webapp.address 设置历史服务器 web 的地址和 端口
13.配置 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:8031
yarn.resourcemanager.admin.address
master:8033
yarn.resourcemanager.webapp.address
master:8088
20.将公钥放入钥匙仓库:
vim ~/.ssh/id_rsa.pub
21.将密钥仓库添加到三个节点
ssh-copy-id master
ssh-copy-id node1
ssh-copy-id node2
*上步骤在三台虚拟机上都要执行
在master主机添加了node1的节点 则要在node1节点(三台机子都要互相执行,以此类推)中添加权限vim ~/.ssh/authorized_keys
22.测试是否免密登录,分别在三台虚拟机上执行:ssh [master/slave1/slave2],如果无需密码直接进入虚拟机用户,则执行成功,否则查看公钥里的文件是否有问题,之后三台虚拟机关机快照备份
23.启动主从机,hadoop用户登录,在master运行 hdfs 格式化命令:hdfs namenode -format(该命令仅在初次初始化或重置集群时执行,若多次格式化则需删除三台虚拟机中的tmp文件夹,rm -rf /home/hadoop/hadoop-2.7.2/tmp),出现has been successfully formatted 表示格式化完成(successfully显示在运行结果中间。。。)。
24.在 master 机器上,运行 hadoop 启动命令:start-all.sh
25.在三台虚拟机上输入指令:jps,出现如图则成功了
26在 master 机器上,运行 hadoop 终止命令:stop-all.sh