一、系统准备
1、准备三台服务器修改/etc/hosts文件,加入下面配置
172.16.4.13 master
172.16.4.14 slave1
172.16.4.15 slave2
然后拷贝hosts到其他两台
[root@localhost ~]$ scp /etc/hosts root@slave1:/etc
[root@localhost ~]$ scp /etc/hosts root@slave2:/etc
2、添加用户
[root@localhost ~]$ useradd admin
[root@localhost ~]$ passwd admin
3、添加文件夹
[root@localhost ~]$ mkdir /opt/module
4、修改文件夹所属
[root@localhost ~]$ chown admin:admin /opt/module
5、切换admin登录
[root@localhost ~]$ su admin
6、ssh名密码登录
[admin@master ~]$ ssh-keygen -t rsa
这里一路回车即可,不用输入任何内容
然后将密钥文件拷贝到另外两台
[admin@master ~]$ ssh-copy-id master
[admin@master ~]$ ssh-copy-id slave1
[admin@master ~]$ ssh-copy-id slave2
再配置另外两台
[admin@slave1 ~]$ ssh-keygen -t rsa
[admin@slave1 ~]$ ssh-copy-id master
[admin@slave1 ~]$ ssh-copy-id slave1
[admin@slave1 ~]$ ssh-copy-id slave2
[admin@slave2 ~]$ ssh-keygen -t rsa
[admin@slave2 ~]$ ssh-copy-id master
[admin@slave2 ~]$ ssh-copy-id slave1
[admin@slave2 ~]$ ssh-copy-id slave2
注意:这里第一台必须以admin用户登录,因为接下来hadoop集群运行需要admin这个用户
二、开始搭建
1、安装JDK配置JDK环境变量
这方面安装网络上很多,基本都行得能,在这里就不重复讲解。
2、Hadoop安装
下载地址:点击打开链接,这里下载3.1.0版本来安装
解压下载好的
[admin@master ~]$ tar -zxvf hadoop-3.1.0.tar.gz
解压后的文件移到/opt下
[admin@master ~]$ mv hadoop-3.1.0 /opt/module/hadoop
3、配置Hadoop
进入配置文件夹
[admin@master ~]$ cd /opt/moudule/hadoop/etc/hadoop
分别配置hadoop-env.sh、yarn-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml这6个文件
hadopp-env.sh与yarn-env.sh都增加上:
[admin@master hadoop]$ vim hadoop-env.sh
[admin@master hadoop]$ vim yarn-env.sh
export JAVA-HOME=/usr/lib/java/jdk1.8.0_161
core-site.xml
[admin@master hadoop]$ vim core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop/data/tmp</value>
</property>
</configuration>
hdfs-site.xml
[admin@master hadoop]$ vim hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 设置namenode的http通讯地址 -->
<property>
<name>dfs.namenode.http-address</name>
<value>master:9870</value>
</property>
<!-- 设置dfs副本数,不设置默认是3个 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.blocksize</name>
<value>268435456</value>
</property>
<property>
<name>dfs.namenode.handler.count</name>
<value>100</value>
</property>
<!-- 设置secondname的端口 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave1:50090</value>
</property>
<!-- 设置namenode存放的路径 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop/data/name</value>
</property>
<!-- 设置datanode存放的路径 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop/data/datanode</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
mapred-site.xml
[admin@master hadoop]$ vim mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定mr运行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>
/opt/hadoop/etc/hadoop,
/opt/hadoop/share/hadoop/common/*,
/opt/hadoop/share/hadoop/common/lib/*,
/opt/hadoop/share/hadoop/hdfs/*,
/opt/hadoop/share/hadoop/hdfs/lib/*,
/opt/hadoop/share/hadoop/mapreduce/*,
/opt/hadoop/share/hadoop/mapreduce/lib/*,
/opt/hadoop/share/hadoop/yarn/*,
/opt/hadoop/share/hadoop/yarn/lib/*
</value>
</property>
</configuration>
yarn-site.xml
[admin@master hadoop]$ vim yarn-site.xml
<?xml version="1.0"?>
<configuration>
<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node1</value>
</property>
</configuration>
创建slaves文件
[admin@master hadoop]$ vim slaves
内容填写
slave1
slave2
创建workers文件
[admin@master hadoop]$ vim workers
内容填写
slave1
slave2
最后把配置好的hadoop拷贝到其他两台上
[admin@master hadoop]$ cd /opt
[admin@master opt]$ scp -r module admin@slave1:`pwd`
[admin@master opt]$ scp -r module admin@slave2:`pwd`
注意:这里的`pwd`不是用单引号,是用数字1键左边的那个上顿号
4、配置系统环境变量
[root@master etc]$ vim /etc/profile
在结尾加上
export HADOOP_HOME=/opt/module/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
然后其他两台也一样的配置环境变量,或直接从master拷贝
[root@master etc]$ scp profile root@slave1:`pwd`
[root@master etc]$ scp profile root@slave2:`pwd`
三、集群启动
1、第一次启动hdfs需要先格式化
[admin@master ~]$ hdfs namenode -format
2、启动
[admin@master ~]$ start-dfs.sh
[admin@slave1 ~]$ start-yarn.sh
这里的yarn是根据hdfs-site.xml 的dfs.namenode.secondary.http-address配置值来决定在哪里启动
3、启动成功后分别在各台服务器上用jps命令查看
master
[admin@master ~]$ jps
4178 Jps
3646 NameNode
slave1
[admin@salve1 ~]$ jps
4104 DataNode
5339 Jps
4223 SecondaryNameNode
slave2
[admin@slave2 ~]$ jps
3062 Jps
2654 DataNode
4、web端查看
打开浏览器输入http://master服务器的IP:9870,3.1之后这里的端口号由原来的50070改为9870