《Hadoop 3.x 完全分布式集群搭建之HDFS指南 | 从原理到实战,万字详解》

 一、Hadoop 入门必备知识

1.Hadoop 发展历程与生态系统为什么选择 Hadoop?

Hadoop诞生于2005年,最初是Apache Nutch搜索引擎项目的一部分。2006年,Doug Cutting将Nutch的分布式文件系统(NDFS)和MapReduce分离出来,形成了独立的Hadoop项目。经过多年发展,Hadoop已经成为大数据领域的核心框架,其生态系统包含了HDFS、MapReduce、YARN、Hive、HBase、Spark等众多组件。

2.适用场景与核心优势

Hadoop适用于处理海量数据的存储和计算需求,具有以下核心优势:
- 高可靠性:通过数据冗余和自动故障恢复保证数据安全
- 高扩展性:可以轻松扩展到数百台服务器
- 高效性:分布式计算框架支持并行处理大量数据
- 低成本:可以运行在普通硬件上,降低IT基础设施成本

3.Hadoop 3.x 新特性解析

Hadoop 3.x相比之前的版本有以下重要改进:
- HDFS:支持Erasure Coding(纠删码),减少数据冗余开销
- YARN:引入了Resource Director和Federation等特性
- 性能提升:优化了内存管理和IO操作

4.hadoop介绍

Hadoop 分为三部分 :  Common、HDFS 、Yarn、MapReduce(有点过时了)
Hadoop生态圈:除了hadoop技术以外,还有hive、zookeeper、flume、sqoop、datax、azkaban等一系列技术。

Hadoop 是 道格·卡丁  本身他是Lucene的创始人。
Lucene 其实是一个jar包。

检索现在主流的是Solr以及ES(Elastic Search)。
比如现在每一个网站,都有一个检索的输入框,底层技术: Solr (稍微有点过时了) ,  ES (正在流行中)

首先面临的问题是:海量数据如何存储?
根据谷歌推出的三篇论文:
BigTable    -- HBase
GFS         -- HDFS
MapReduce   -- MapReduce

并将这些技术统称为 Hadoop (Logo 大象)。

Hadoop的三个版本:
Apache 版本(开源版本)    3.3.1 非常的新了
Cloudera 版本--商⽤版(道格·卡丁) CDH
Hortonworks  --hadoop的代码贡献者在这家公司非常的多。
现在各个大公司都在推出自己的大数据平台--> 大数据平台开发工程师
DataLight  --> 国产的CDH平台

 二、搭建前准备

全分布模式:必须至少有三台以上的Linux

前期准备工作:

1、准备三台服务器

我们先准备一台,之后再克隆即可

1) 设置静态IP

第一步:vi /etc/sysconfig/network-scripts/ifcfg-ens33
第二步:输入i   进入编辑模式
第三步:修改内容

第四步:摁 esc 退出编辑模式
第五步:shift+ :  都是英文的  输入 wq!  强制保存并退出
第六步:systemctl restart network   重启网络

2)安装jdk 

1、创建一个文件夹,用于存放安装包 /opt/modules

mkdir -p /opt/modules     --以后存放安装包
mkdir -p /opt/installs    --以后存放解压后的软件 

2、上传文件(安装包)

3、解压该软件

将软件解压到/opt/installs

tar -zxvf jdk-8u171-linux-x64.tar.gz -C /opt/installs/

 4、重命名

1、进入文件夹 cd /opt/installs
2、进行重命名 mv jdk1.8.0_171 jdk

5、配置环境变量

vi /etc/profile

export JAVA_HOME=/opt/installs/jdk
export PATH=$PATH:$JAVA_HOME/bin
在文件的最后追加,不要删除别人的任何配置。

6、刷新配置文件,让配置文件生效

source /etc/profile

7、验证配置是否生效

三、给系统拍个照(快照) 

快照就是将来可以恢复,以及可以clone(克隆) 的基础,记得先关机, 再克隆。

1、克隆完之后对两台电脑 进行静态ip设置

  设置静态IP

第一步:vi /etc/sysconfig/network-scripts/ifcfg-ens33
第二步:输入i   进入编辑模式
第三步:修改内容

第四步:摁 esc 退出编辑模式
第五步:shift+ :  都是英文的  输入 wq!  强制保存并退出
第六步:systemctl restart network   重启网络

ok现在三台虚拟机都已经设置好静态ip,而且已经安装好jdk接下来我们就要进入分布式搭建了。

四、完全分布式搭建之HDFS

1.安装前准备

1) 修改主机名

vi hostname


bigdata01#根据自己来设置主机名,我是bigdata01。

三台都要设置我的分别为,bigdata01,bigdata02,bigdata03。 

2)修改映射文件hosts

vi /etc/hosts

192.168.32.128 bigdata01
192.168.32.129 bigdata02
192.168.32.130 bigdata03

3)进行远程拷贝每台都要映射

scp -r /etc/hosts root@bigdata02:/etc/
scp -r /etc/hosts root@bigdata03:/etc/

4)三台虚拟机间要进行免密登录

ssh-copy-id bigdata01
ssh-copy-id bigdata02
ssh-copy-id bigdata03
每台都需要

 5)第一台安装hadoop

1、上传
2、解压
   tar -zxvf hadoop-3.3.1.tar.gz -C /opt/installs/
3、重命名
   cd /opt/installs/
   mv hadoop-3.3.1 hadoop
4、开始配置环境变量
   vi /etc/profile
   

export HADOOP_HOME=/opt/installs/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

5、刷新配置文件
   source /etc/profile
6、验证hadoop命令是否可以识别
   hadoop version

安装完第一台不要着急拷贝因为我们还要修改配置文件。

6)关闭了防⽕墙

systemctl status firewalld

查看防火墙是否关闭
如果没有关闭执行
systemctl stop firewalld    关闭防火墙
systemctl disable firewalld 禁止开机自启

 7)修改linux的⼀个安全机制

vi /etc/selinux/config

注意修改⾥⾯的第二个SELINUX=disabled
2.修改配置文件

修改bigdata01配置文件

路径:/opt/installs/hadoop/etc/hadoop

core-site.xml

<configuration>
    <!-- 设置namenode节点 -->
    <!-- 注意: hadoop1.x时代默认端⼝9000 hadoop2.x时代默认端⼝8020 hadoop3.x时 代默认端⼝ 9820 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://bigdata01:9820</value>
    </property>
    
    <!-- hdfs的基础路径,被其他属性所依赖的⼀个基础路径 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/installs/hadoop/tmp</value>
    </property>
</configuration>

hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <!--secondarynamenode守护进程的http地址:主机名和端⼝号。参考守护进程布局 -->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>bigdata02:9868</value>
    </property>
    <!-- namenode守护进程的http地址:主机名和端⼝号。参考守护进程布局 -->
    <property>
        <name>dfs.namenode.http-address</name>
        <value>bigdata01:9870</value>
    </property>
</configuration>

hadoop-env.sh

export JAVA_HOME=/opt/installs/jdk
# Hadoop3中,需要添加如下配置,设置启动集群⻆⾊的⽤户是谁
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

修改workers

bigdata01
bigdata02
bigdata03

 删除 bigdata01 下的 hadoop 下的 logs 以及 tmp 文件

rm -rf /opt/installs/hadoop/logs  /opt/installs/hadoop/tmp

修改完了第一台的配置文件,开始分发到其他两台上去。

假如以前没有将bigdata01上的hadoop 拷贝给 02 和 03

那么就远程拷贝:

scp -r /opt/installs/hadoop/ root@bigdata02:/opt/installs/

scp -r /opt/installs/hadoop/ root@bigdata03:/opt/installs/


拷贝环境变量:
scp -r /etc/profile root@bigdata02:/etc/
scp -r /etc/profile root@bigdata03:/etc/

在02 和 03 上刷新环境变量  source /etc/profile

格式化namenode 【bigdata01】

hdfs namenode -format

启动hdfs

只在第一台电脑上启动
start-dfs.sh

 启动后jps,看到

bigdata01

bigdata02

bigdata03

namenode

secondaryNameNode

x

datanode

datanode

datanode

web访问:namenode 在哪一台,就访问哪一台。http://bigdata01:9870

总结:
1、start-dfs.sh 在第一台启动,不意味着只使用了第一台,而是启动了集群。
stop-dfs.sh 其实是关闭了集群
2、一台服务器关闭后再启动,上面的服务是需要重新启动的。
这个时候可以先停止集群,再启动即可。也可以使用单独的命令,启动某一个服务。

hadoop-daemon.sh start namenode				# 只开启NameNode
hadoop-daemon.sh start secondarynamenode	# 只开启SecondaryNameNode
hadoop-daemon.sh start datanode				# 只开启DataNode

hadoop-daemon.sh stop namenode				# 只关闭NameNode
hadoop-daemon.sh stop secondarynamenode		# 只关闭SecondaryNameNode
hadoop-daemon.sh stop datanode				# 只关闭DataNode

3、namenode 格式化有啥用

相当于在整个集群中,进行了初始化,初始化其实就是创建文件夹。创建了什么文件夹: 

logs  tmp
你的hadoop安装目录下。 

cd /opt/installs/hadoop

ls

你会发现创建了logs  tmp文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值