Hadoop集群搭建详细教程
服务器存储环境准备
服务器硬件规格如下
服务器rios-cad2:7T空硬盘*1
- 服务器rios-cad6-121:7TB空硬盘*1。
服务器rios-cad6-122:7TB空硬盘*1。
首先需要对空硬盘进行分区、格式化文件系统、挂载。
分区
先介绍两种分区表:
- MBR分区表:(MBR含义:主引导记录)
- 所支持的最大卷:
2TB
- 对分区的设限:最多4个主分区或3个主分区加一个扩展分区
- 所支持的最大卷:
- GPT分区表:(GPT含义:GUID分区表)
- 支持最大卷:
18EB
(1EB=1024TB) - 每个磁盘最多支持128个分区
- 支持最大卷:
因此,当磁盘超过2TB
时,我们要么将磁盘分为多个MBR分区,否则需要使用GBT分区。
Linux传统的分区工具fdisk不支持GPT分区,但可以使用另一个工具parted来对GPT磁盘操作。parted功能很强大,既可用命令行也可以用于交互式。注意:parted只可以对没有做过任何分区的空盘做分区。
这里我们只对硬盘(编号/dev/sda)分1个分区,因此我们使用parted工具来实现GPT分区。
sudo parted /dev/sda |
可以输入p打印磁盘信息,查看分区的情况,找到起始和结束位置。
(parted) p |
发现此时硬盘的信息全部为空。接下来我们设定使用的分区类型, 如果要用MBR分区,输入msdos即可。
(parted) mklabel gpt |
可以看到,此时硬盘已经被标记为gpt分区了。接下来将所有空间都划分到一个分区中。
(parted) mkpart primary 0% 100% |
primary指分区类型为主分区,0是分区开始位置,100%是分区结束位置。相同的命令为:
(parted) mkpart primary 0-1 |
接下来可以查看一下分区情况:
(parted) p |
可以看到此时文件系统还是空的,输入q
保存并退出。
(parted) q |
当在系统里创建了一个新的分区后,因为mount挂载在重启服务器后会失效,所以这个提示的意思是我们需要将分区信息写到/etc/fstab文件中让其永久挂载。
最后我们可以再检查一下分区的结果:
lsblk |
可以看到/dev/sda已经有一个分区/dev/sda/sda1了,其大小为7T。
格式化文件系统
格式化文件系统使用的命令是mkfs
。
现代Linux系统支持多种不同的文件系统:如EXT3、EXT4、XFS、BTRFS,等等。针对特定的工作负载,这些文件系统具有略微不同的差别。如果追求性能的稳定性以及高级特性,那么可以使用EXT3,它在最大型的Hadoop集群中已经得到了测试。完整的列表请参见http://wiki.apache.org/hadoop/DiskSetup。在这里我们将使用EXT4,因为它在大型文件中有着更为出众的表现,这点使它成为了优秀的Hadoop文件系统之一。
mkfs -t ext4 /dev/sda1 |
如果想要使用ext3
可按如下操作。
mkfs -t ext3 /dev/sdb1 |
格式化成ext3
的时候会出现另一个问题:ext3
默认的block size
的大小为4k,最大只能支持8T的空间,因此我们需要在格式化时指定block size
的大小为8K,这样才可以最大支持16T的空间。
mkfs -t ext3 -b 8192 /dev/sdb1 |
挂载
挂载到/home目录下
mount /dev/sda1 /apps/big-data/ |
最后,因为新分区的mount挂载在重启服务器后会失效,我们需要进行自动挂载分区配置。
首先获取磁盘的UUID。
blkid /dev/sda1 |
然后修改fstab文件来实现开机自动挂载。
vim /etc/fstab |
至此,我们的硬件环境准备就算大功告成了。
搭建Hadoop集群
我们这里采用的软件版本如下:
- 从AdoptJDK下载的OpenJDK8U-jdk_x64_linux_hotspot_8u372b07.tar.gz
- 从官网下载的hadoop-3.2.4.tar.gz
其他环境如下:
- Hadoop配置文件所在目录:etc/hadoop
- 配置参数并不是只有下文的那些,很多没配置都是官方默认的参数
- 默认参数查看方式:hadoop.apache.org/docs/3.2.4 划到最底下左下角有个Configuration模块
一、主节点hadoop-env.sh 文件
cd /apps/big-data/hadoop/etc/hadoop |
配置JAVA_HOME,找到文件中被注释掉的那行:
export JAVA_HOME=/apps/big-data/java/jdk8u372-b07 |
配置HADOOP_HOME:
export HADOOP_HOME=/apps/big-data/hadoop |
设置用户以执行对应角色shell命令,只有设置了HDFS和YARN集群各角色的用户,一键启停脚本才能使用
export HDFS_NAMENODE_USER=root |
二、主节点core-site.xml文件
- 参数fs.defaultFS:配置默认的文件系统,file:/// 就是本地文件系统; hdfs:// 是hadoop分布式文件系统。
- 参数hadoop.tmp.dir:Hadoop各种临时数据的存放处。
- 参数hadoop.http.staticuser.user:在Web UI访问HDFS使用的用户名,涉及到文件访问权限,如果不是root用户,有些目录可能无法访问。
cd /apps/big-data/hadoop/etc/hadoop |
在文件末尾的两个configuration之间插入
<!-- 在Web UI访问HDFS使用的用户名。--> |
三、主节点hdfs-site.xml文件
- 参数dfs.namenode.secondary.http-address:设置SecondaryNameNode角色运行的主机,配置了之后,一键启停脚本才知道在哪台服务器上启动SecondaryNameNode
cd /apps/big-data/hadoop/etc/hadoop |
<configuration> |
四、主节点mapred-site.xml文件
- 配置MapReduce程序的一些参数
- 参数mapreduce.framework.name:mr程序默认运行方式。yarn集群模式 local本地模式,执行mr程序时,如果不指定运行方式,就会使用这个参数配置的方式,这里不配置的话,官方默认的是local本地模式
- 参数yarn.app.mapreduce.am.env:MR App Master环境变量
- 参数mapreduce.map.env:MR MapTask环境变量
- 参数mapreduce.reduce.env:MR ReduceTask环境变量
- HADOOP_HOME这个环境变量配置bin目录的父文件夹即可
cd /apps/big-data/hadoop/etc/hadoop |
<configuration> |
五、主节点yarn-site.xml文件
- 配置YARN集群的一些参数
- 参数yarn.resourcemanager.hostname:yarn集群主角色RM运行的机器,一键启停时知道在哪启动ResourceManager
- 参数yarn.nodemanager.aux-services:NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MR程序,否则报错
- 参数yarn.scheduler.minimum-allocation-mb:每个容器请求的最小内存资源(以MB为单位)
- 参数yarn.scheduler.maximum-allocation-mb:每个容器请求的最大内存资源(以MB为单位)
- 参数yarn.nodemanager.vmem-pmem-ratio:容器虚拟内存与物理内存之间的比率,配置为4时,表示每有1G的物理内存,就可以使用4G的虚拟内存
- 虚拟内存:物理内存不够时,使用磁盘来计算,虽然速度慢,但是也能计算
cd /apps/big-data/hadoop/etc/hadoop |
<configuration> |
六、主节点workers文件
- 配置从角色所在的服务器,一键启停时,会遍历workers文件,挨个机器启动从角色(DataNode、NodeManager)
cd /apps/big-data/hadoop/etc/hadoop |
sn1.hadoop.rioslab.org |
hosts文件配置如下:
10.8.6.2 mn1.hadoop.rioslab.org mn1 |
启动Hadoop集群
依次输入命令向数据各节点复制Hadoop配置文件:
scp -r etc/hadoop/ root@sn1:/apps/big-data/hadoop/etc/ |
格式化namenode
需要在Hadoop 安装目录下的 bin 目录里的 hdfs 命令进行格式化。
./hdfs namenode -format |
启动Hadoop和检测
启动Hadoop集群。以下命令需要在sbin/文件夹中进行
./start-dfs.sh(HDFS 集群) |
输入后利用jps对主节点和从节点检查。最后进入web界面查看监控:
http://mn1.hadoop.rioslab.org:9871(查看 HDFS 集群监控)
http://mn1.hadoop.rioslab.org:19888(查看 YARN 集群监控)
关闭集群
同样需要在sbin目录下进行
./stop-dfs.sh(HDFS 集群) |
到这里我们的Hadoop集群就已经搭建完成。
参考资料[1]:https://blog.csdn.net/Spark_BITZH/article/details/127461423
参考资料[2]:https://juejin.cn/post/7174570294126837773