前言
嗨,各位小伙伴,恭喜大家学习到这里,不知道关于大数据前面的知识遗忘程度怎么样了,又或者是对大数据后面的知识是否感兴趣,本文是《大数据从入门到精通(超详细版)》
的一部分,小伙伴们如果对此感谢兴趣的话,推荐大家按照大数据学习路径开始学习哦。
以下就是完整的学习路径哦。
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
推荐大家认真学习哦!!!
前面我们已经介绍了HDFS的入门知识与原理,对HDFS的使用场景已经有了一个初步的认识,现在我们开始动手实操HDFS的安装吧,HDFS安装好了,对后续学习大数据的其他组件也起到一个铺垫作用。
文章目录
HDFS的安装部署
相信大家看到安装部署就会产生恐惧的心理,因为安装部署往往伴随着一堆环境问题,但是大家不要害怕,今天教大家完美完成部署安装。
下面是部署安装需要使用到的软件的百度网盘链接。 😊😊😊
软件下载完成后,我们就正式开始安装部署了。
集群规划
凡事有个规划,现在我们先规划下集群的节点,任务分配,内存情况等等。
注意:
- 我们需要在虚拟机的hosts文件量里面添加
主机映射。
主机映射我们下面会介绍一下,以防小伙伴忘记这个概念了。
vim /etc/hosts
#添加的文件内容
xxx.xxx.xxx.130 node
xxx.xxx.xxx.131 node1
xxx.xxx.xxx.132 node2
- 对于Node节点,就是**NameNode所在的节点,需要运行多个组件,要占用的内存较高,我们需要增大NameNode所在节点的内存。**
什么是主机映射呢
在计算机网络中,hosts文件是一个文本文件,用于将主机名映射到相应的IP地址。它位于操作系统中的特定位置(通常是C:\Windows\System32\drivers\etc\hosts或/etc/hosts),并被用作域名解析的本地数据库。
当您在浏览器或其他应用程序中输入一个URL或主机名时,系统首先会检查hosts文件是否包含对该主机名的映射。如果找到匹配项,系统会使用hosts文件中指定的IP地址来建立与目标主机的连接,而不是通过DNS(域名系统)查询来获取IP地址。
Hosts文件的映射规则非常简单:每行包含一个IP地址和一个或多个对应的主机名,之间用空格或制表符分隔。例如:
127.0.0.1 localhost
192.168.0.1 example.com
在这个例子中,第一行将IP地址127.0.0.1映射到主机名localhost。这是一个特殊的IP地址,通常指代本地主机。第二行将IP地址192.168.0.1映射到主机名example.com
使用hosts文件的一个常见应用是在开发过程中模拟特定的域名或测试环境,以便直接访问开发机器或测试服务器,而无需修改公共的DNS配置。
需要注意的是,hosts文件中的信息优先级较高,这意味着如果hosts文件中存在与要访问的主机名相匹配的映射规则,系统将直接使用该映射而忽略DNS查询。因此,在修改hosts文件时应谨慎,确保正确性和合理性。
总结起来,hosts文件提供了一种简单但有效的方式,将主机名映射到IP地址,用于本地域名解析,绕过DNS查询。
接下来就开始
前置配置
前置配置是非常重要的一步,完成了此步,我们就能为HDFS集群部署节省大量的时间。
配置免密登录
后续安装的集群化软件,多数需要远程登录以及远程执行命令,我们可以简单起见,配置三台Linux服务器之间的免密码互相SSH登陆
-
在每一台机器都执行:
ssh-keygen -t rsa -b 4096
,一路回车到底即可 -
在每一台机器都执行:
ssh-copy-id node ssh-copy-id node1 ssh-copy-id node2
-
执行完毕后,node、node1、node2之间将完成root用户之间的免密互通
通过这种方式可完成连通测试
ssh node ssh node1 ssh node2
创建hadoop用户并配置免密登录
后续大数据的软件,将不会以root用户启动(确保安全,养成良好的习惯)
我们为大数据的软件创建一个单独的用户hadoop,并为三台服务器同样配置hadoop用户的免密互通
-
在每一台机器执行:
useradd hadoop
,创建hadoop用户 -
在每一台机器执行:
passwd hadoop
,设置hadoop用户密码为123456 -
在每一台机器均切换到hadoop用户:
su - hadoop
,并执行ssh-keygen -t rsa -b 4096
,创建ssh密钥 -
在每一台机器均执行
ssh-copy-id node ssh-copy-id node1 ssh-copy-id node2
配置JDK环境
-
创建文件夹,用来部署JDK,将JDK和Tomcat都安装部署到:/export/server 内
mkdir -p /export/server
-
解压缩JDK安装文件
tar -zxvf jdk-8u351-linux-x64.tar.gz -C /export/server
-
配置JDK的软链接
ln -s /export/server/jdk1.8.0_351 /export/server/jdk
-
配置JAVA_HOME环境变量,以及将$JAVA_HOME/bin文件夹加入PATH环境变量中
#编辑/etc/profile文件 export JAVA_HOME=/export/server/jdk export PATH=$PATH:$JAVA_HOME/bin
-
生效环境变量
source /etc/profile
-
配置java执行程序的软链接
#删除系统自带的java程序 rm -f /usr/bin/java #软链接我们自己安装的java程序 ln -s /export/server/jdk/bin/java /usr/bin/java
-
执行验证
java -version javac -version
正常显示的话就执行完成啦!!!
完成压缩包的解压
-
上传Hadoop安装包到node节点中
-
sh解压缩安装包到/export/server/中
tar -zxvf hadoop-3.3.4.tar.gz -C /export/server
-
构建软链接
cd /export/server ln -s /export/server/hadoop-3.3.4 hadoop
这时候我们已经可以看到Hadoop文件的内部结构了。
各个文件夹含义如下:
bin
,存放Hadoop的各类程序(命令)etc
,存放Hadoop的配置文件include
,C语言的一些头文件lib
,存放Linux系统的动态链接库(.so文件)libexec
,存放配置Hadoop系统的脚本文件(.sh和.cmd)licenses-binary
,存放许可证文件sbin
,管理员程序(super bin)share
,存放二进制源码(Java jar包)
完成配置文件的修改
配置文件可谓是重中之重啊,基本上完成部署安装都是依靠我们配置文件的配置是否正确
配置HDFS集群,我们主要涉及到如下文件的修改:
- workers:配置从节点(DataNode)有哪些h
- adoop-env.sh:配置Hadoop的相关环境变量
- core-site.xml:Hadoop核心配置文件
- hdfs-site.xml:HDFS核心配置文件
这些文件均存在与hadoop/etc/hadoop
文件夹中。
配置workers文件
进入配置文件目录
cd etc/hadoop
编辑workers文件
vim workers
填入如下内容,表明集群记录了三个从节点(DataNode)
node
node2
node3
配置hadoop-env.sh文件
# 填入如下内容
export JAVA_HOME=/export/server/jdk
export HADOOP_HOME=/export/server/hadoopsh
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_LOG_DIR=$HADOOP_HOME/logs
- JAVA_HOME,指明JDK环境的位置在哪
- HADOOP_HOME,指明Hadoop安装位置
- HADOOP_CONF_DIR,指明Hadoop配置文件目录位置
- HADOOP_LOG_DIR,指明Hadoop运行日志目录位置通过记录这些环境变量, 来指明上述运行时的重要信息
配置core-site.xml文件
<!--在文件内部填入如下内容-->
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://node:8020</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
</configuration>
key:fs.defaultFS
-
含义:HDFS文件系统的网络通讯路径
-
值:hdfs://node:8020
-
协议为hdfs:// namenode为node namenode通讯端口为8020
-
key:io.file.buffer.size
-
含义:io操作文件缓冲区大小
-
值:131072 bit
hdfs://node:8020为整个HDFS内部的通讯地址,应用协议为hdfs://(Hadoop内置协议)表明DataNode将和node的8020端口通讯,node是NameNode所在机器,此配置固定了node必须启动NameNode进程
配置hdfs-site.xml文件
<!--# 在文件内部填入如下内容 -->
<configuration>
<!--
dfs.datanode.data.dir.perm
hdfs文件系统,默认创建的文件权限设置
值:700,即:rwx------
-->
<property>
<name>dfs.datanode.data.dir.perm</name>
<value>700</value>
</property>
<!--
dfs.namenode.name.dir
NameNode元数据的存储位置
值:/data/nn,在node1节点的/data/nn目录下
-->
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/nn</value>
</property>
<!--
dfs.namenode.hosts
NameNode允许哪几个节点的DataNode连接(即允许加入集群)
值:node、node2、node3,这三台服务器被授权
-->
<property>
<name>dfs.namenode.hosts</name>
<value>node,node1,node2</value>
</property>
<!--
key:dfs.blocksize
含义:hdfs默认块大小
值:268435456(256MB)
-->
<property>
<name>dfs.blocksize</name>
<value>268435456</value>
</property>
<!--
key:dfs.namenode.handler.count
含义:namenode处理的并发线程数
值:100,以100个并行度处理文件系统的管理任务
-->
<property>
<name>dfs.namenode.handler.count</name>
<value>100</value>
</property>
<!--
key:dfs.datanode.data.dir
含义:从节点DataNode的数据存储目录
值:/data/dn,即数据存放在node、node2、node3,三台机器的/data/dn内
-->
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/dn</value>
</property>
</configuration>
完成文件的创建
根据下述2个配置项:
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/nn</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/dn</value>
</property>
- namenode数据存放node的/data/nn
- datanode数据存放node、node2、node3的/data/dn
在node节点:
mkdir -p /data/nn
mkdir /data/dn
在node1和node2节点:
mkdir -p /data/dn
分发配置文件
以上的操作,我们都是在节点完成的,我们还需要配置其他节点的配置文件,但是此时为了避免浪费时间编写,我们需要使用scp命令将这些文件分发过去。
#在node执行如下命令
cd /export/server
scp -r hadoop-3.3.4 node1:`pwd`/
scp -r hadoop-3.3.4 node2:`pwd`/
配置环境变量
为了方便我们操作Hadoop,可以将Hadoop的一些脚本、程序配置到PATH中,方便后续使用。
在Hadoop文件夹中的bin、sbin两个文件夹内有许多的脚本和程序,现在来配置一下环境变量
vim /etc/profile
# 在/etc/profile文件底部追加如下内容
export HADOOP_HOME=/export/server/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
在node1和node2配置同样的环境变量
授权为hadoop用户
hadoop部署的准备工作基本完成
为了确保安全,hadoop系统不以root用户启动,我们以普通用户hadoop来启动整个Hadoop服务
所以,现在需要对文件权限进行授权。
ps:请确保已经提前创建好了hadoop用户(前置准备章节中有讲述),并配置好了hadoop用户之间的免密登录
以root身份,在node1、node2、node3三台服务器上均执行如下命令:
# 以root身份,在三台服务器上均执行
chown -R hadoop:hadoop /data
chown -R hadoop:hadoop /export
格式化整个文件系统
前期准备全部完成,现在对整个文件系统执行初始化,这是十分关键的一步,没有这一步也会导致整个集群的启动出现异常
格式化namenode
# 确保以hadoop用户执行
su - hadoop
# 格式化namenode
hadoop namenode -format
启动
# 一键启动hdfs集群
start-dfs.sh
# 一键关闭hdfs集群
stop-dfs.sh
# 如果遇到命令未找到的错误,表明环境变量未配置好,可以以绝对路径执行
/export/server/hadoop/sbin/start-dfs.sh
/export/server/hadoop/sbin/stop-dfs.sh
查看HDFS Web UI
启动完成后,可以在浏览器打开:http://node:9870,即可查看到hdfs文件系统的管理网页。
安装部署已经完成了,建议小伙伴们打一个虚拟机快照哦,以给我们辛苦的成功留一个备份哈。
赠语
恭喜小伙伴完成本篇文章的学习,相信文章的内容您已经掌握得十分清楚了,如果您对大数据的知识十分好奇,请接下来跟着学习路径完成大数据的学习哦,相信您定能学有所成的~~~
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓