侧边栏壁纸
  • 累计撰写 10 篇文章
  • 累计创建 2 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

hdfs的搭建

Administrator
2024-01-23 / 1 评论 / 0 点赞 / 101 阅读 / 14571 字

1.概述

HDFS集群: 负责海量数据的储存,由三个部分所组成,分别为NameNode,DateNode,SecondaryNameNode.

<!--more-->

NameNode:NameNode是HDFS集群的主服务器,通常称为名称节点或者主节点。一但NameNode关闭,就无法访问Hadoop集群。NameNode主要以元数据的形式进行管理和存储,用于维护文件系统名称并管理客户端对文件的访问;NameNode记录对文件系统名称空间或其属性的任何更改操作;HDFS负责整个数据集群的管理,并且在配置文件中可以设置备份数量,这些信息都由NameNode存储。

DateNode:DataNode是HDFS集群中的从服务器,通常称为数据节点。文件系统存储文件的方式是将文件切分成多个数据块,这些数据块实际上是存储在DataNode节点中的,因此DataNode机器需要配置大量磁盘空间。它与NameNode保持不断的通信,DataNode在客户端或者NameNode的调度下,存储并检索数据块,对数据块进行创建、删除等操作,并且定期向NameNode发送所存储的数据块列表,每当DataNode启动时,它将负责把持有的数据块列表发送到NameNode机器中。

SecondaryNameNode:辅助NameNode,分担其工作量。比如定期合并Fsimage和Edits,并推送给NameNode,相当于NameNode的一个秘书。

2.安装要求

需要三台以上的Linux服务器,以及Java环境。(本次使用四台服务器来搭建)

3.配置静态IP

首先是先确定四台服务器的IP范围与主机名

主机

IP

NameNode

192.168.106.128

SecondaryNameNode

192.168.106.129

DataNode1

192.168.106.130

DataMode2

192.168.106.131

设置服务器IP:

 cd /etc/sysconfig/network-scripts/&&vi ifcfg-ens33
IPADDR=192.168.106.128#主机IP
PREFIX=24
GATEWAY=192.168.106.2#网关
DNS1=114.114.114.114

image-20221008193430742

然后重启即可生效

reboot

其他三台服务器也是一样的操作

4.配置Java环境

首先安装好Filezilla文件上传工具便于jdk的上传

yum install lrzsz

输入rz

image-20221008211055031

解压jdk

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

将文件夹复制到/usr/local/下,并重命名为jdk8

cp -r jdk1.8.0_221 /usr/local/jdk8

将jdk添加到系统环境变量

vi /etc/profile
export JAVA_HOME=/usr/local/jdk8
export PATH=$PATH:$JAVA_HOME/bin  

image-20221008211253831 立即生效

source /etc/profile

测试一下

java -version

image-20221008211617901

vi Hello.java
public class Hello{
        public static void main(String[] args){
                System.out.println("Hello World");
        }
}
javac Hello.java && java Hello

出现这个说明Java环境已经配置好了

image-20221008211546289

5.HDFS的搭建

  • 上传Hadoop的压缩包到服务器

  • 解压压缩包

    tar -xvf hadoop-3.1.3.tar.gz
  • 将解压后的文件复制到/usr/loacl/下

cp -r hadoop-3.1.3 /usr/local/hadoop-3.1.3
  • 将Hadoop添加到系统变量中

    vi /etc/profile
  • 将以下内容添加到Java系统变量的下面

export HADOOP_HOME=/usr/local/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

image-20221008212036456

  • 最后让系统变量生效

source /etc/profile
  • 查看Hadoop是否安装完成

hdfs version

image-20221008212120827 出现以上提示则说明安装完成

  • 下面接着配置hadoop-env.sh,由于通过SSH远程启动进程的时候默认不会加载/etc/profile设置,JAVA_HOME变量就加载不到,需要手动指定。

    • hadoop-env.sh文件在/usr/local/hadoop-3.1.3/etc/hadoop目录下

cd /usr/local/hadoop-3.1.3/etc/hadoop&&vi hadoop-env.sh

然后添加jdk的路径

export JAVA_HOME=/usr/local/jdk8

image-20221008212247432

  • 配置core-site.xml

    • 打开core-site.xml

        cd /usr/local/hadoop-3.1.3/etc/hadoop&&vi core-site.xml
<configuration>
   <!--用来指定hdfs的namenode的地址-->
   <property>
     <name>fs.defaultFS</name>
     <value>hdfs://NameNode:9820</value>
   </property>
   <!-- 指定hadoop数据的存储目录,这个目录会自动创建-->
   <property>
     <name>hadoop.tmp.dir</name>
     <value>/var/root/hadoop/full</value>
   </property>
</configuration>

image-20221008212427910

  • 配置hdfs-site.xml

vi hdfs-site.xml
<!-- 指定NameNode web端访问地址 -->
<property>
<name>dfs.namenode.http-address</name>
<value>NameNode:9870</value>
</property>
<!-- 指定secondary namenode web端访问地址 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>SecondaryNameNode:9868</value>
</property>
<!-- 指定每个block块的副本数,默认为3 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>

6.配置其他主机

  • 关闭防火墙和禁用防火墙

systemctl stop firewalld &&  systemctl disable firewalld
  • 使用vm直接克隆三台服务器,然后分别配置好主机名和IP

  • 设置四台主机的免密登录 1.生成密钥(在xshell中可以批量执行)

ssh-keygen -tdsa -P '' -f ~/.ssh/id_dsa

2.将密钥拷贝到authorized_keys中

cat ~/.ssh/id_dsa.pub	>> ~/.ssh/authorized_keys

3.然后分别将密钥拷贝到四台机器上即可

scp ~/.ssh/authorized_keys SecondaryNameNode:/root/.ssh/
scp ~/.ssh/authorized_keys DataNode1:/root/.ssh/
scp ~/.ssh/authorized_keys DataNode2:/root/.ssh/

  • 设置使用root用户登录(四台机子上都执行)

cd /usr/local/hadoop-3.1.3/sbin && vi start-dfs.sh

  • 修改主机名hostName(使用主机名来替代ip)

vi /etc/hostname

  • 集群内主机的域名映射配置

可以通过域名访问IP 在header上, vi /etc/hosts

192.168.106.128 NameNode
192.168.106.129 SecondaryNameNode
192.168.106.130 DataNode1
192.168.106.131 DataNode2

#将hosts文件拷贝到集群中的所有其他机器上

scp /etc/hosts node1:/etc/
scp /etc/hosts node2:/etc/
scp /etc/hosts node3:/etc/

使配置立即生效

source /etc/profile

workers**配置**

cd /usr/local/hadoop-3.1.3/etc/hadoop
vi workers

加入所有的节点

header
node1
node2
node3

7.启动hdfs

start-dfs.sh

以上用到的文件

链接:https://pan.baidu.com/s/1yocUPFD1NKg80Q6AIyvKFg 
提取码:02et

0

评论区