Hadoop3.3.0完全分布式部署

什么是Hadoop?

Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。HDFS是Apache Hadoop Core项目的一部分

Namenode 和 Datanode ?

HDFS采用master/slave架构。一个HDFS集群是由一个Namenode和一定数目的Datanodes组成。Namenode是一个中心服务器,负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。集群中的Datanode一般是一个节点一个,负责管理它所在节点上的存储。HDFS暴露了文件系统的名字空间,用户能够以文件的形式在上面存储数据。从内部看,一个文件其实被分成一个或多个数据块,这些块存储在一组Datanode上。Namenode执行文件系统的名字空间操作,比如打开、关闭、重命名文件或目录。它也负责确定数据块到具体Datanode节点的映射。Datanode负责处理文件系统客户端的读写请求。在Namenode的统一调度下进行数据块的创建、删除和复制。

准备环境

  1. Cent OS7
  2. 配置三台静态虚拟机
  3. Hadoop、jdk安装包

配置静态IP

查看这篇文章静态ip配置

名称ip
hadoop01192.168.149.11
hadoop02192.168.149.12
hadoop03192.168.149.13

2.准备三台虚拟机

1.这里用的是VMware Workstation Pro–》虚拟机–》管理–》克隆
在这里插入图片描述
2.下一步,需要注意的是,完整克隆,不是链接克隆
在这里插入图片描述
3.设置好名称和路径之后,点击完成即可
在这里插入图片描述
4.在克隆之前可以配置好jdk,这里用的xftp进行上传文件,解压 tar -zxvf 包 后面跟解压到的路径
5.配置jdk和Hadoop环境变量 vi ~/.bashrc

#jdk和hadoop环境变量
export JAVA_HOME=/opt/hadopp/hadoop
export JRE_HOME=${JAVA_HOME}/jre
export HADOOP_HOME=/opt/hadoop/hadoop
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

6.生效环境变量 source ./bashrc
hadoop version 查看版本
在这里插入图片描述
7.分别在 Hadoop01、Hadoop02、hadoop03修改vi /etc/hostname为master、slave1、slave2,然后分别重启生效 reboot
8.配置Master节点中的 vi /etc/hosts 主机和IP地址的映射

192.168.149.11 master
192.168.149.12 slave1
192.168.149.13 slave2

9.然后远程拷贝到slave1和slave2 命令:scp /etc/hosts slave1:/etc

配置集群/分布式环境

一、 配置hosts文件

二、 建立hadoop运行帐号

三、 配置ssh免密码连入

四、 下载并解压hadoop安装包

五、 配置/etc/hostname文件

六、 配置/etc/hosts文件

七、 配置core-size.xml 文件

八、 配置hdfs-size.xml文件

九、 配置yarn-size.xml 文件

十、 向各节点复制hadoop

十一、 格式化namenode

十二、 启动hadoop

十三、 用jps检验各后台进程是否成功启动

  • 修改workers.在cd /opt/hadoop/hadoop/etc/hadoop/ vi workers,把localhost删除,添加节点为数据节点,一个数据节点为一行
slave1
slave2
  • 首先手动添加临时文件夹 在/opt/hodoop/hadoop/

  • mkdir tmp

  • 修改文件core-size.xml

<configuration>
#配置默认端口号和主机名
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://master:9000</value>
        </property>
#配置临时文件
        <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/opt/hadoop/hadoop/tmp</value>
                <description>Abase for other temporary directories.</description>
        </property>
</configuration>

  • 修改hdfs-size.xml,需要创建临时文件夹cd /opt/hadoop/hadoop mkdir dfs/name 和 mkdir dfs/data
<configuration>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>master:50090</value>
        </property>
#配置冗余数据 两个数据节点存储两份
        <property>
                <name>dfs.replication</name>
                <value>2</value>
        </property>
#指定存储hdfs中namenode存储位置
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/opt/hadoop/hadoop/tmp/dfs/name</value>
        </property>
#指定存储hdfs中datanode存储位置
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/opt/hadoop/hadoop/tmp/dfs/data</value>
        </property>
    <property>
        <name>dfs.permissions</name>
        <value>falser</value>
#默认为true,设置为false可以不要检查权限就生成dfs上的文件
        <description>false</description>
    </property>
</configuration>

  • 如果没有这个文件夹 复制原来的一份,修改为mapered-size.xml
cp mapered-size.template mapred-site.xmlxml 
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
        <description>local</description>#指定mapreduce运行在yarn平台,默认为local
    </property>
</configuration>


  • 修改yarn-size.xml
<configuration>

<!-- Site specific YARN configuration properties -->
#指定resourcemanager运行的hostname
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>master</value>
        </property>
#nodemanager服务和获取输入的方式
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
</configuration>

  • 打包远程复制给slave1和slave2
tar -zcf ~/hadoop.master.tar.gz ./hadoop
scp ./hadoop.master.tar.gz slave1:/home/hadoop
scp ./hadoop.master.tar.gz slave2:/home/hadoop
  • 在master第一次运行时 格式化节点
hdfs namenode -format
  • cd ~ 查看 ls
  • 删除原来的hadoop 文件如果存在的话
  • 在slace1、slave2分别解压到环境配置的路径 这里是/opt/hadoop

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
  • 在master 启动start-dfs.sh 和 start-yarn.sh
  • master机器
    在这里插入图片描述
  • slave1机器jps查看

在这里插入图片描述

  • slave2 查看
    在这里插入图片描述
    - 注意!!!
  • 如果是root用户配置的话,需要有以下修改
  • 1、master,slave都需要修改start-dfs.sh,stop-dfs.sh,start-yarn.sh,stop-yarn.sh四个文件
    2、如果你的Hadoop是另外启用其它用户来启动,记得将root改为对应用户

在/hadoop/sbin路径下:
将start-dfs.sh,stop-dfs.sh两个文件顶部添加以下参数

#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

还有,start-yarn.sh,stop-yarn.sh顶部也需添加以下:

#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
  • 关闭防火墙

  • systemctl stop firewalld.service

  • 禁止防火墙开机启动

  • systemctl disable firewalld.service

  • 关闭防火墙后,用自己浏览器访问hdfs,根据hdfs-size.xml 对应的主机ip和端口号,即可访问。
    在这里插入图片描述

  • IP地址加上端口9870,即可访问HDFS全部信息。
    在这里插入图片描述

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hello World呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值