Hadoop配置
1、简单介绍
-
分布式系统常见的组织形式
- 去中心化模式:没有明确中心,大家协调工作
- 中心化模式:有明确的中心,基于中心节点分配工作
-
什么是主从模式(Master-Slaves)
主从模式就是中心化模式,表示有一个主节点来作为管理者,管理协调下属一批从节点工作
-
HDFS是Hadoop三大组件(HDFS,MapReduce,YARN)之一
- 全称是:Hadoop Distributed File System(Hadoop分布式文件系统)
- 是Hadoop技术栈内提供的分布式数据存储解决方案
- 可以在多台服务器上构建存储集群,存储海量的数据
-
HDFS中的角色
- NameNode
- HDFS的主角色,是一个独立的进程
- 负责管理HDFS整个文件系统
- 负责管理DataNode
- DataNode
- HDFS系统的从角色,是一个独立的进程
- 主要负责数据的存储,即存入数据和取出数据
- SecondaryNameNode
- NameNode的辅助,是一个独立的进程
- 主要帮助NameNode完成元数据整理工作
- NameNode
2、安装Hadoop
1.上传hadoop压缩包并解压到相应目录
tar -zxvf hadoop-3.3.1.tar.gz -C /export/server/
2.构建软链接
ln -s /export/server/hadoop-3.3.1 /export/server/hadoop
3.进入hadoop文件,各个文件介绍
- bin:存放Hadoop的各类程序(命令)
- etc:存放Hadoop的配置文件
- include:C语言的一些头文件
- lib:存放Linux系统的动态链接库(.so文件)
- libexec:存放配置Hadoop系统的脚本文件(.sh和.cmd)
- licenses-binary:存放许可证文件
- sbin:管理员程序(super bin)
- share:存放二进制源代码(java jar包)
4.配置HDFS集群,我们主要涉及到如下文件的修改
- workers:配置从节点(DataNode)有哪些
- hadoop-env.sh:配置Hadoop的相关环境变量
- core-site.xml:Hadoop的核心配置文件
- hdfs-site.xml:HDFS核心配置文件
这些配置文件均存在于**$HADOOP_HOME/etc/hadoop**文件夹中
$HADOOP_HOME是后续我们要设置的环境变量,其指代Hadoop安装文件夹,即/export/server/hadoop
5.配置workers文件
# 打开workers配置文件
vim /export/server/hadoop/etc/hadoop/workers
# 删除localhost,输入以下内容
node01
node02
node03
6.配置hadoop-env.sh文件
# 打开hadoop-env.sh配置文件
vim /export/server/hadoop/etc/hadoop/hadoop-env.sh
# 输入以下内容
export JAVA_HOME=/export/server/jdk # 指明JDK环境的位置
export HADOOP_HOME=/export/server/hadoop # 指明Hadoop安装位置
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop # 指明Hadoop配置文件目录位置
export HADOOP_LOG_DIR=$HADOOP_HOME/logs # 指明Hadoop运行日志目录位置
7.配置core-site.xml文件
# 打开core-site.xml配置文件
vim /export/server/hadoop/etc/hadoop/core-site.xml
# 删除<configuration></configuration>,输入以下内容
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://node01:8020</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
</configuration>
- key:fs.defaultFS
- 含义:HDFS文件系统的网络通讯路径
- 值:hdfs://node01:8020
- 协议为hdfs://
- NameNode为node01
- NameNode通讯端口为8020
- key:io.file.buffer.size
- 含义:io操作文件缓冲区大小
- 值:131072 bit
hdfs://node01:8020为整个HDFS内部的通讯地址,应用协议为hdfs://(Hadoop内置协议),表明DataNode将和node01的8020端口通讯,node01是NameNode所在机器,此配置固定了node01必须启动NameNode进程
8.配置hdfs-site.xml文件
# 打开hdfs-site.xml配置文件
vim /export/server/hadoop/etc/hadoop/hdfs-site.xml
# 删除<configuration></configuration>,输入以下内容
<configuration>
<property>
<name>dfs.datanode.data.dir.perm</name>
<value>700</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/data/nn</value>
</property>
<property>
<name>dfs.namenode.hosts</name>
<value>node01,node02,node03</value>
</property>
<property>
<name>dfs.blocksize</name>
<value>268435456</value>
</property>
<property>
<name>dfs.namenode.handler.count</name>
<value>100</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/dn</value>
</property>
</configuration>
- key:dfs.datanode.data.dir.perm
- 含义:hdfs文件系统,默认创建的文件权限设置
- 值:700
- 含义:即 rwx- - - - - -
- key:dfs.namenode.name.dir
- 含义:NameNode元数据的存储位置
- 值:/data/nn
- 含义:在node01节点的/data/nn目录下
- key:dfs.namenode.hosts
- 含义:NameNode允许哪几个节点的DataNode连接(即允许加入集群)
- 值:node01,node02,node03
- 含义:这三台服务器被授权
- key:dfs.blocksize
- 含义:hdfs默认块大小
- 值:268435456
- 含义:256MB
- key:dfs.namenode.handler.count
- 含义:NameNode处理的并发线程数
- 值:100
- 含义:以100个并行度处理文件系统的管理任务
- key:dfs.datanode.data.dir
- 含义:从节点DataNode的数据存储目录
- 值:/data/dn
- 含义:数据存放在node01,node02,node03,三台机器的/data/dn内
9.创建数据目录
-
在node01节点
mkdir -p /data/nn mkdir -p /data/dn
-
在node02,node03节点
mkdir -p /data/dn
10.分发Hadoop文件夹
-
分发
scp -r hadoop-3.3.1 node02:`pwd`/ scp -r hadoop-3.3.1 node03:`pwd`/
-
在node02,node03执行,为Hadoop配置软链接
ln -s /export/server/hadoop-3.3.1/ /export/server/hadoop
-
在node01,node02,node03节点配置环境变量
# 打开profile配置文件 vim /etc/profile # 在文件最后添加 export HADOOP_HOME=/export/server/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
11.由于我们是root用户,所以还需要配置如下
# 打开环境变量配置文件
vim /etc/profile
# 添加以下内容,配置启动hadoop用户可以为root
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
# 重新加载配置文件
source /etc/
12.在node01节点格式化namenode
hadoop namenode -format
13.Hadoop的启动与关闭
# 在NameNode节点上实现启动与关闭
# 启动
start-all.sh
# 关闭
stop-all.sh
14.在web页面查看
# 在网址中输入IP加9870端口号
192.168.173.10:9870
# 在hosts文件中配置了主机名映射也可使用主机名加9870端口号
node01:9870