hadoop分布式部署(Hadoop-3.3)

1、单机模式、伪分布式、分布式的区别。

单机模式: 只在一台机器上运行,储存采用本地文件系统,没有采用HDFS。
伪分布式: 储存采用HDFS,但是HDFS的名称节点和数据节点都在同一台机器上。
分布式: 储存采用HDFS,而且HDFS的名称节点和数据节点都在不同的机器上。

2、分布式规划
  • 一个完全的Hadoop集群需要三台机器完成
  • 一台主机系统作Master
  • 另外两台为:slave1、slave2
  • 三台主机机器处于同一局域网下。
  • 三台主机的用户名均为hadoop
  • 三台主机都能相互Ping通
主机角色 主机名 ip地址 运行进程
主节点 master 192.168.1.101 NameNode、ResourceManager、SecondaryNameNode
从节点 slave1 192.168.1.102 DataNode、NodeManager
从节点 slave2 192.168.1.103 DataNode、NodeManager
3、准备环境

部署需要三台虚拟机,可以在一台虚拟机上把基础的环境搭好再克隆三份。
在配置环境之前可以先配好XShell连接,yum换源。

(1)克隆前准备环境:
  1. 操作系统:CentOS7(XShell连接)
  2. JDK1.8安装,并配置环境变量(查看JDK安装教程)
  3. 添加hadoop用户,并设置管理员权限,后面的所有操作都是用hadoop这个用户
useradd -m hadoop -s /bin/bash #创建hadoop用户
passwd hadoop #设置密码
chmod -v u+w /etc/sudoers  #修改sudoers文件读写权限(默认只读)
vi /etc/sudoers

root    ALL=(ALL)       ALL    #找到这一行
hadoop  ALL=(ALL)       ALL    #添加这一行
#保存退出
chmod -v u-w /etc/sudoers    #删除sudoers的写的权限
  1. hosts文件修改
vi /etc/hosts
#在文件中添加下面几行,IP地址自己规划好,为对应主机的IP
192.168.183.101 master
192.168.183.102 slave1
192.168.183.103 slave2
(2)克隆后配置
  1. 配置网络

将规划好的IP地址对应修改就行(参考这篇文章)
如果克隆前配置好的话,只需要改一下IP地址就行了
记得重启网卡

  1. 修改hostname

在对应主机上执行命令
看不到变化重启一下就可以了

hostnamectl set-hostname master     #master主机

hostnamectl set-hostname slave1     #slave1主机

hostnamectl set-hostname slave2     #slave2主机
  1. 互Ping 其他主机,可以Ping通就OK。
    hadoop分布式部署(Hadoop-3.3)_第1张图片
  2. SSH免密登录

SSH免密登录:是主节点master能够不需要输入密码,直接ssh登录到从节点slave1、slave2上
默认已经安装opssh-server服务,没有安装的自行安装

ssh-keygen -t rsa  	#有提示直接Enter即可
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
#ssh-copy-id 将你的公共密钥填充到一个远程机器上的authorized_keys文件中
ssh-copy-id slave1 #传给slave1
ssh-copy-id slave2 #传给slave2

查看文件权限,不对免密登录不会生效。三台主机都要修改

[hadoop@slave1 ~]$ ll -a
# .ssh文件夹权限应为700
drwx------. 2 hadoop hadoop   29 4月  24 13:20 .ssh
[hadoop@slave1 ~]$ cd .ssh/
[hadoop@slave1 .ssh]$ ll
# authorized_keys文件权限应为600
-rw-------. 1 hadoop hadoop 395 4月  24 13:20 authorized_keys

修改文件权限

chmod 700 ~/.ssh/
chmod 600 ~/.ssh/authorized_keys

完成后登录测试一下。

[hadoop@master .ssh]$ ssh localhost
Last login: Sat Apr 24 13:19:36 2021 from master
[hadoop@slave1 ~]$ exit
[hadoop@master .ssh]$ ssh slave1
Last login: Sat Apr 24 13:20:36 2021 from master
[hadoop@slave1 ~]$ exit
[hadoop@master .ssh]$ ssh slave2
Last login: Sat Apr 24 13:21:20 2021 from master
[hadoop@slave2 ~]$ exit
4、安装Hadoop

我们现在只在主节点上安装hadoop,然后将配置好的hadoop再分发给从节点。

(1)上传hadoop文件

可以使用XFTP上传hadoop安装文件

(2)解压文件,并修改文件夹名
[hadoop@master ~]$tar -zxvf hadoop-3.3.0.tar.gz -C /usr/local/
[hadoop@master ~]$ cd /usr/local/ #切换工作路径
[hadoop@master local]$ sudo mv hadoop-3.3.0 hadoop #修改文件夹名
[hadoop@master local]$ sudo chown -R hadoop ./hadoop #修改文件权限
(3)配置环境变量

三台主机都要配置一次hadoop和java环境变量

[hadoop@master local]$ vi ~/.bashrc 
#添加这几行
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

没有java环境变量的也添加一下。

export JAVA_HOME=/usr/local/jdk1.8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

让环境变量生效

[hadoop@master local]$ source ~/.bashrc

5、修改Hadoop配置文件

在master主机上修改Hadoop配置,这些配置文件都位于/usr/local/hadoop/etc/hadoop目录下。

(1)修改workers

hadoop2.x 中是slaves 这个文件
hadoop3.x 中已被修改为 workers
把DataNode 的主机名写入该文件,每行一个
如果加入localhost 则master 主机即做名称节点又作数据节点。

slave1
slave2
(2)修改hadoop-env.sh

在这两个文件中都取消注释JAVA_HOME那行,把java的实际路径写上
否则启动集群时,会提示路径找不到

vi hadoop-env.sh
#添加这一行
export JAVA_HOME=/usr/local/jdk1.8/
(3)修改core-site.xml 文件
<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/tmp</value>
        <description>临时文件夹</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
        <description>定义默认的文件系统主机和端口</description>
    </property>
</configuration>

临时文件夹需要自己手动创建

[hadoop@master hadoop]$ cd /usr/local/hadoop/
[hadoop@master hadoop]$ mkdir tmp
(4)修改hdfs-site.xml
<configuration>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>master:50090</value>
       <description>定义HDFS对应的HTTP服务器地址和端口</description>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop/dfs/name</value>
       <description>namenode上存储hdfs名字空间元数据 </description>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/dfs/data</value>
        <description>datanode上数据块的物理存储位置</description>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
        <description>冗余存储的副本数,即一份数据保存2份副本</description>
    </property>
    <property>
        <name>dfs.permissions</name>
        <value>falser</value>
        <description>默认为true,设置为false可以不要检查权限就生成dfs上的文件</description>
    </property>
</configuration>

配置中的 /usr/local/hadoop/dfs/name、/usr/local/hadoop/dfs/name文件夹需要自己手动创建

[hadoop@master hadoop]$ cd /usr/local/hadoop/
[hadoop@master hadoop]$ mkdir -p dfs/name
[hadoop@master hadoop]$ mkdir -p dfs/data
(5)修改mapred-site.xml

mapred-site.xml文件如果不存在
复制mapred-site.xml.template 再修改文件名

[hadoop@master hadoop]$ cp mapred-site.xml.template mapred-site.xml

然后编辑mapred-site.xml文件

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
        <description>指定mapreduce运行在yarn平台,默认为local</description>
    </property>
</configuration>
(6)修改yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
        <description>
                NodeManager上运行的附属服务
                指定NodeManager获取数据的方式是shuffle
                需配置成mapreduce_shuffle,才可运行MapReduce程序             
       </description>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
        <description>
                指定resourcemanager所在的hostname
                即指定yarn的老大即ResourceManger的地址
        </description>
    </property>
</configuration>
6、打包分发

将hadoop文件打包,然后分发给 两个从节点

[hadoop@master local]$ tar -zcf ~/hadoop.master.tar.gz ./hadoop
[hadoop@master local]$ cd ~
[hadoop@master ~]$ scp ./hadoop.master.tar.gz hadoop@slave1:/home/hadoop/
[hadoop@master ~]$ scp ./hadoop.master.tar.gz hadoop@slave2:/home/hadoop/

如果原来安装过hadoop要删除掉,两个主机都要进行同样操作。

[hadoop@slave1 ~]$ sudo rm -rf /usr/local/hadoop/
[hadoop@slave1 ~]$ sudo tar -zxvf hadoop.master.tar.gz -C  /usr/local/
[hadoop@slave1 ~]$ sudo chown -R hadoop /usr/local/hadoop
7、启动Hadoop集群

进入到master主机,先格式化名称节点,然后启动hadoop

[hadoop@master ~]$ cd /usr/local/hadoop
[hadoop@master hadoop]$ bin/hdfs namenode -format #格式化名称节点
[hadoop@master hadoop]$ sbin/start-all.sh	#启动hadoop

查看master节点上的进程

[hadoop@master hadoop]$ jps
2707 ResourceManager	#ResourceManager是Yarn集群主控节点(yarn的老大)
4758 NameNode			#名称节点
4982 SecondaryNameNode	#第二名称节点
5366 Jps

查看slave1节点上的进程

[hadoop@slave1 local]$ jps
2085 DataNode	  #数据节点
2184 NodeManager  #NodeManager管理一个YARN集群中的每一个节点(yarn的小弟)
2585 Jps

查看slave2节点上的进程

[hadoop@slave2 local]$ jps
3552 DataNode	  #数据节点
3651 NodeManager  #yarn的小弟
3851 Jps

参考资料:
http://dblab.xmu.edu.cn/blog/1177-2/#more-1177
https://blog.csdn.net/m0_46209092/article/details/105352872
https://blog.csdn.net/sjmz30071360/article/details/79889055

你可能感兴趣的:(大数据,hadoop,hdfs,大数据,分布式)