Hadoop安装部署&全分布式搭建

目录

1. 完全分布式模式介绍

2. 平台软件说明

3. 守护进程布局

4. 完全分布式搭建环境准备

        4.1. 总纲

        4.2. 关闭防⽕墙

        4.3. 静态IP和主机名配置

        4.4. 配置/etc/hosts⽂件

        4.5. 免密登陆认证

        4.6. 时间同步

                4.6.1. 同步⽹络的时间

                4.6.2. ⾃定义时间服务器

        4.7. 安装Jdk和Hadoop,配置相关环境变量

 5. Hadoop的配置⽂件

        5.1完全分布式配置

6. 另外两台机器配置说明

7. 格式化NameNode

8. 启动集群


1. 完全分布式模式介绍

完全分布式,指的是在真实环境下,使⽤多台机器,共同配合,来构建⼀个完整的分布式 ⽂件系统。
在真实环境中, hdfs 中的相关守护进程也会分布在不同的机器中,⽐如:
-1. namenode 守护进程尽可能的单独部署在⼀台硬件性能相对来说⽐较好的机器中。
-2. 其他的每台机器上都会部署⼀个 datanode 守护进程,⼀般的硬件环境即可。
-3. secondarynamenode 守护进程最好不要和 namenode 在同⼀台机器上。

2. 平台软件说明

平台&软件

说明

操作系统

Windows7 或 Windows 10 或 Mac OS

虚拟软件

VMWare 或 Parallels Desktop(Mac Only)

虚拟机

主机名: hadoop01,IP地址: 192.168.10.101

主机名: hadoop 02 IP 地址 : 192.168.10.102
主机名: hadoop 03 IP 地址 : 192.168.10.103

SSH⼯具

MobaXterm(Windows) 或 FinalShell(Mac)

软件包上传路径

/root/softwares

软件安装路径

/usr/local

JDK

jdk-8u221-linux-x64.tar.gz

Hadoop

hadoop-2.7.6.tar.gz

⽤户

root

注意,注意,注意:
1. 如果你是从伪分布式过来的,最好先把伪分布式的相关守护进程关闭: stop-all.sh
2. 删除原来伪分布式的相关设置
如果原来使⽤的是默认路径 , 现在已经没有⽤了
如果原来使⽤的跟现在全分布式路径⼀样 , 因为这⾥跟之前的初始化的内容不⼀样 , ⽽且
这个⽂件要让系统⾃动⽣成
综上 : 要删除掉 namenode datanode 的⽬录

3. 守护进程布局

我们搭建 hdfs 的完全分布式,顺便搭建⼀下 yarn hdfs yarn 的相关守护进程的布 局如下:
hadoop01 : namenode,datanode,ResourceManager,nodemanager
hadoop02 : datanode,nodemanager,secondarynamenode
hadoop03 : datanode,nodemanager

4. 完全分布式搭建环境准备

        4.1. 总纲

-1. 三台机器的防⽕墙必须是关闭的 .
-2. 确保三台机器的⽹络配置畅通 (NAT 模式,静态 IP ,主机名的配置 )
-3. 确保 /etc/hosts ⽂件配置了 ip hostname 的映射关系
-4. 确保配置了三台机器的免密登陆认证(克隆会更加⽅便)
-5. 确保所有机器时间同步
-6. jdk hadoop 的环境变量配置

        4.2. 关闭防⽕墙

[root@ hadoop01 ~] # systemctl stop firewalld
[root@ hadoop01 ~] # systemctl disable firewalld
[root@ hadoop01 ~] # systemctl stop NetworkManager
[root@ hadoop01 ~] # systemctl disable NetworkManager
# 最好也把 selinux 关闭掉,这是 linux 系统的⼀个安全机制,进⼊⽂件中将
SELINUX 设置为 disabled
[root@hadoop01~] # vi /etc/selinux/config
.........
SELINUX = disabled
.........
情况说明: 如果安装好三台机器,三台机器的防⽕墙都需要单独关闭和设置开 机不启动。如果准备使⽤克隆⽅式,只关闭hadoop01 机器即可。下⾯的配置也 是如此。

        4.3. 静态IP和主机名配置

--1. 配置静态 IP (确保 NAT 模式)
[root@hadoop01 ~] # vi /etc/sysconfig/network-scripts/ifcfg-ens33
............
BOOTPROTO = static # dhcp 改为 static
............
ONBOOT = yes                       # no 改为 yes
IPADDR = 192.168.10.101        # 添加 IPADDR 属性和 ip 地址
PREFIX = 24     # 添加 NETMASK = 255.255.255.0 或者 PREFIX = 24
GATEWAY = 192.168.10.2       # 添加⽹关 GATEWAY
DNS1 = 114.114.114.114           # 添加 DNS1 和备份 DNS
DNS2 = 8.8.8.8
--2. 重启⽹络服务
[root@hadoop01~] # systemctl restart network
或者
[root@hadoop01~] # service network restart
--3. 修改主机名 ( 如果修改过,请略过这⼀步 )
[root@localhost ~] # hostnamectl set-hostname hadoop01
或者
[root@localhost ~] # vi /etc/hostname
hadoop01

        4.4. 配置/etc/hosts⽂件

[root@hadoop01~] # vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
:: 1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.101 hadoop01     #添加本机的静态IP 和本机的主机名之间的映 射关系
192.168.10.102 hadoop02
192.168.10.103 hadoop03

        4.5. 免密登陆认证

-1 . 分别3台机器 使⽤ rsa 加密技术,⽣成公钥和私钥。⼀路回⻋即可
[root@hadoop01 ~] # cd ~
[root@hadoop01 ~] # ssh-keygen -t rsa
[root@hadoop02 ~] # cd ~
[root@hadoop02 ~] # ssh-keygen -t rsa
[root@hadoop03 ~] # cd ~
[root@hadoop03 ~] # ssh-keygen -t rsa

-2.将公钥写入认证文件这一步是将自己的公钥写入认证文件

[root@hadoop01 ~]#   cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

-3.连接其他2台机器,将他们的密钥也写入认证文件

[root@hadoop01 ~]# ssh root@hadoop02 cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

[root@hadoop01 ~]# ssh root@hadoop03 cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_key

查看认证文件的内容

[root@hadoop01 ~]cat ~/.ssh/authorized_keys

发现里面有 hadoop01  hadoop02 hadoop03 的密钥

将认证文件复制到其他主机   注:这里是由于第一次连接还要输入密码。scp命令常用于传输文件。

[root@hadoop01 ~]# scp ~/.ssh/authorized_keys root@hadoop02:~/.ssh/authorized_keys
[root@hadoop01 ~]# scp ~/.ssh/authorized_keys root@hadoop03:~/.ssh/authorized_keys

 免密登录测试

[root@hadoop01 ~]ssh hadoop01

[root@hadoop01 ~]ssh hadoop02

[root@hadoop01 ~]ssh hadoop03

推出命令  exit

后面不用输入密码切换就成功了

        4.6. 时间同步

                4.6.1. 同步⽹络的时间

# 同步时间,需要使⽤ ntpdate 命令,如果没有可以使⽤ yum安装。yum install ntpdate
# 使⽤ ntpdate 同步⽹络上的时间服务器的时间,例如 : time.windows.com、 ntp.aliyun.com

[root@hadoop01 ~] # ntpdate -u ntp.aliyun.com
定时同步
# 可以将时间同步做成⼀个定时任务,每隔⼀段时间就同步⼀下⽹络的时间
[root@hadoop01 ~] # crontab -e
* * * * * /usr/sbin/ntpdate -u ntp.aliyun.com   #输入然后保存退出

                4.6.2. ⾃定义时间服务器

可以不用设置的

如果集群没有联⽹,那么可以⾃⼰搭建⼀个时间服务器,让集群中的所有机器都同步局域
⽹内的时间服务器。
# 1 选择集群中的某⼀台机器作为时间服务器,例如 hadoop01
# 2 保证这台服务器安装了 ntp.x86_64
# 3 保证 ntpd 服务运⾏ ......
[root@hadoop01 ~] # sudo service ntpd start
# 开机⾃启动 :
[root@hadoop01 ~] # chkconfig ntpd on
# 4 配置相应⽂件:
[root@hadoop01 ~] # vi /etc/ntp.conf
# Hosts on local network are less restricted.
# restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
# 添加集群中的⽹络段位
restrict 192 .168.10.0 mask 255 .255.255.0 nomodify notrap
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool
(http://www.pool.ntp.org/join.html).
# server 0.centos.pool.ntp.org iburst 注释掉
# server 1.centos.pool.ntp.org iburst 注释掉
# server 2.centos.pool.ntp.org iburst 注释掉
# server 3.centos.pool.ntp.org iburst 注释掉
server 127 .127.1.0 -master 作为服务器
# 5 其他机器要保证安装 ntpdate.x86_64
# 6 其他机器要使⽤ root 定义定时器
*/1 * * * * /usr/sbin/ntpdate -u  hadoop01

        4.7. 安装JdkHadoop,配置相关环境变量

-1 . 上传和解压两个软件包
[root@hadoop01 ~] # tar -zxvf jdk-8u221-linux-x64.tar.gz -C /usr/local/
[root@hadoop01 ~] # tar -zxvf hadoop-2.7.6.tar.gz -C /usr/local/
-2 . 进⼊ local ⾥,给两个软件更名
[root@hadoop01 ~] # cd /usr/local/
[root@hadoop01 local] # mv 1.8.0_221/ jdk
[root@hadoop01 local] # mv hadoop-2.7.6/ hadoop
-3 . 配置环境变量
[hadoop@hadoop01 local] # vi /etc/profile
..... 省略 ...........
#java environment
export JAVA_HOME = /usr/local/jdk
export PATH = $JAVA_HOME /bin: $JAVA_HOME /jre/bin: $PATH
#hadoop environment
export HADOOP_HOME = /usr/local/hadoop
export PATH = $HADOOP_HOME /bin: $HADOOP_HOME /sbin: $PATH
-4 . 生效文件
[hadoop@hadoop01 local] # source /etc/profile

 5. Hadoop的配置⽂件

1. 在完全分布式集群的配置中,需要配置的是 4 个配置⽂件
core-site.xml
hdfs-site.xml
mapred-site.xml
yarn-site.xml

        5.1完全分布式配置

1. 配置 core-site.xml
[root@hadoop01 ~]# cd /usr/local/hadoop/etc/hadoop
[root@hadoop01 hadoop]# vi core-site.xml
<configuration>
        <!-- hdfs的地址名称: schame,ip,port-->
        <property>
                <name> fs.defaultFS </name>
                <value> hdfs://hadoop01:8020 </value>
        </property>
        <!-- hdfs的基础路径,被其他属性所依赖的⼀个基础路径 -->
        <property>
                <name> hadoop.tmp.dir </name>
                <value> /usr/local/hadoop/tmp </value>
        </property>
</configuration>
2. 配置 hdfs-site.xml
[root@hadoop01 hadoop]# vi hdfs-site.xml
<configuration>
        <!-- namenode守护进程管理的元数据⽂件 fsimage 存储的位置 -->
        <property>
                <name> dfs.namenode.name.dir </name>
                <value> file://${hadoop.tmp.dir}/dfs/name </value>
        </property>
        <!-- 确定 DFS 数据节点应该将其块存储在本地⽂件系统的何处 -->
        <property>
                <name> dfs.datanode.data.dir </name>
                <value> file://${hadoop.tmp.dir}/dfs/data </value>
        </property>
        <!-- 块的副本数 -->
        <property>
                <name> dfs.replication </name>
                <value> 3 </value>
        </property>
        <!-- 块的⼤⼩ (128M), 下⾯的单位是字节 -->
        <property>
                <name> dfs.blocksize </name>
                <value> 134217728 </value>
        </property>
        <!-- secondarynamenode守护进程的 http 地址:主机名和端⼝号。参考守护进程布局-->
        <property>
                <name> dfs.namenode.secondary.http-address </name>
                <value> hadoop02 :50090 </value>
        </property>
        <!-- namenode守护进程的 http 地址:主机名和端⼝号。参考守护进程布局-->
        <property>
                <name> dfs.namenode.http-address </name>
                <value> hadoop 01:50070 </value>
        </property>
</configuration>
3. 配置 mapred-site.xml
[root@hadoop01 hadoop]# cp mapred-site.xml.template mapred-site.xml
[root@hadooop01 hadoop]# vi mapred-site.xml
<configuration>
        <!-- 指定 mapreduce 使⽤ yarn 资源管理器 -->
        <property>
                <name> mapreduce.framework.name </name>
                <value> yarn </value>
        </property>
        <!-- 配置作业历史服务器的地址 -->
        <property>
                <name> mapreduce.jobhistory.address </name>
                <value> hadoop01:10020 </value>
        </property>
        <!-- 配置作业历史服务器的 http 地址 -->
        <property>
                <name> mapreduce.jobhistory.webapp.address </name>
                <value> hadoop 01:19888 </value>
        </property>
</configuration>
4. 配置 yarn-site.xml
[root@hadooop01 hadoop]# vi yarn-site.xml
<configuration>
        <!-- 指定 yarn shuffle 技术 -->
        <property>
                <name> yarn.nodemanager.aux-services </name>
                <value> mapreduce_shuffle </value>
        </property>
        <!-- 指定 resourcemanager 的主机名 -->
        <property>
                <name> yarn.resourcemanager.hostname </name>
                <value> hadoop01 </value>
        </property>
        <!--下⾯的可选 -->
        <!--指定 shuffle 对应的类 -->
        <property>
                <name> yarn.nodemanager.aux-services.mapreduce_shuffle.class </name>
                <value> org.apache.hadoop.mapred.ShuffleHandler </value>
        </property>
        <!--配置 resourcemanager 的内部通讯地址 -->
        <property>
                <name> yarn.resourcemanager.address </name>
                <value> hadoop01:8032 </value>
        </property>
        <!--配置 resourcemanager scheduler 的内部通讯地址 -->
        <property>
                <name> yarn.resourcemanager.scheduler.address </name>
                <value> hadoop01:8030 </value>
        </property>
        <!--配置 resoucemanager 的资源调度的内部通讯地址 -->
        <property>
                <name> yarn.resourcemanager.resource-tracker.address </name>
                <value> hadoop01:8031 </value>
        </property>
        <!--配置 resourcemanager 的管理员的内部通讯地址 -->
        <property>
                <name> yarn.resourcemanager.admin.address </name>
                <value> hadoop01:8033 </value>
        </property>
        <!--配置 resourcemanager web ui 的监控⻚⾯ -->
        <property>
                <name> yarn.resourcemanager.webapp.address </name>
                <value> hadoop01:8088 </value>
        </property>
</configuration>
5. 配置 hadoop-env.sh
[root@hadoop01hadoop] # vi hadoop-env.sh
.........
# The java implementation to use.
export JAVA_HOME = /usr/local/jdk
.........
6. 配置 slaves ⽂件
# 此⽂件⽤于指定 datanode 守护进程所在的机器节点主机名
[root@hadoop01 hadoop] # vi slaves
hadoop01
hadoop02
hadoop03
7. 配置 yarn-env.sh ⽂件
# 此⽂件可以不配置,不过,最好还是修改⼀下 yarn jdk 环境⽐较好
[root@hadoop01 hadoop] # vi yarn-env.sh
.........
# some Java parameters
export JAVA_HOME = /usr/local/jdk
if [ " $JAVA_HOME " ! = "" ]; then
#echo "run java in $JAVA_HOME"
JAVA_HOME = $JAVA_HOME
fi
.........

6. 另外两台机器配置说明

“scp”进⾏同步
提示:本⽅法适⽤于多台虚拟机已经提前搭建出来的场景。
--1 . 同步 hadoop slave 节点上
[root@hadoop01 ~] # cd /usr/local
[root@hadoop01 local] # scp -r ./hadoop hadoop02:/usr/local/
[root@hadoop01 local] # scp -r ./hadoop hadoop03:/usr/local/
--2 . 同步 /etc/profile slave 节点上
[root@hadoop01 local] # scp /etc/profile hadoop02:/etc/
[root@hadoop01 local] # scp /etc/profile hadoop03:/etc/
--3 . 如果 slave 节点上的 jdk 也没有安装,别忘记同步 jdk
[root@hadoop01 local] # scp -r ./jdk hadoop02:/usr/local/
[root@hadoop01 local] # scp -r ./jdk hadoop03:/usr/local/
--4 . 检查是否同步了 /etc/hosts ⽂件
--5 . 其他机器配置文件生效下
[root@hadoop02 ~] # source /etc/profile
[root@hadoop03 ~] # source /etc/profile

7. 格式化NameNode

1. 在h adoop01 机器上运⾏命令
[root@hadoop01 ~] # hdfs namenode -format

8. 启动集群

1. 启动脚本和关闭脚本介绍
1. 启动脚本
-- start-dfs.sh : ⽤于启动 hdfs 集群的脚本
-- start-yarn.sh : ⽤于启动 yarn 守护进程
-- start-all.sh : ⽤于启动 hdfs yarn
2. 关闭脚本
-- stop-dfs.sh : ⽤于关闭 hdfs 集群的脚本
-- stop-yarn.sh : ⽤于关闭 yarn 守护进程
-- stop-all.sh : ⽤于关闭 hdfs yarn
3. 单个守护进程脚本
-- hadoop-daemons.sh : ⽤于单独启动或关闭 hdfs 的某⼀个守护进 程的脚本
-- hadoop-daemon.sh : ⽤于单独启动或关闭 hdfs 的某⼀个守护进 程的脚本
reg:
hadoop-daemon.sh [start|stop]
[namenode|datanode|secondarynamenode]
-- yarn-daemons.sh : ⽤于单独启动或关闭 hdfs 的某⼀个守护进程的 脚本
-- yarn-daemon.sh : ⽤于单独启动或关闭 hdfs 的某⼀个守护进 程的脚本
reg:
yarn-daemon.sh [start|stop]
[resourcemanager|nodemanager]
2. 启动 集群
[root@hadoop01 ~] # start-all.sh
3. jps 查看进程
hadoop01 : namenode,datanode,ResourceManager,nodemanager
hadoop02 : datanode,nodemanager,secondarynamenode
hadoop03 : datanode,nodemanager
4. WebUI 查看
http://192.168.10.101:50070

 

 http://192.168.10.101:8088

 页面出来就集群搭建好了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值