本地Hadoop集群搭建

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

本地Hadoop集群搭建

yuanged   2020-03-14 我要评论
# 什么是Hadoop? Hadoop是一个开源的Apache项目,通常用来进行大数据处理。 Hadoop集群的架构: master节点维护分布式文件系统的所有信息,并负责调度资源分配,在Hadoop集群中`node-master`就是master的角色,其包括两个服务: * NameNode: 负责管理分布式文件系统,维护了数据块在集群中的存储信息; * ResourceManager: 管理YARN任务,同时负责在worker节点的调度和执行。 worker节点负责存放数据,并提供执行任务的能力。在worker节点上包含两个进程: * DataNode: 管理在该节点上存放的物理数据,称为`NameNode`; * NodeManager: 管理在该节点上运行的任务。 # 机器设置 以下配置都是针对Ubuntu系统的。我准备了3台机器: * node-master: 192.168.0.113 * node1: 192.168.0.114 * node2: 192.168.0.115 ## 用户hadoop创建 1. 创建用户`hadoop`,并设置密码: ```bash sudo adduser hadoop ``` 2. 把`hadoop`用户添加到`sudo`用户组获取管理员权限: ```bash sudo adduser hadoop sudo ``` ## 安装JDK 我安装的是JDK8,安装方式略。 ## host文件配置 为了节点之间可以方便的通过名字来通信,我们在hosts文件中加入如下内容: ``` 192.168.0.113 node-master 192.168.0.114 node1 192.168.0.115 node2 192.168.0.116 node3 ``` ## 配置ssh免密登录 配置了ssh证书后,master阶段通过ssh免密登录其他节点。 1. 使用`hadoop`用户登录到mastr机器,并创建SSH证书: ``` ssh-keygen -b 4096 -C 'hadoop-yarn' ``` 2. 查看生成的公钥,并复制下公钥的内容: ``` cat /home/hadoop/.ssh/id_rsa.pub ``` 3. 在每个机器的`/home/hadoop/.ssh`文件夹下创建名为`master.pub`的文件,并将上面复制的公钥信息粘贴到里面; 4. 将证书信息拷贝到已授权秘钥文件中: ``` cat ~/.ssh/master.pub >> ~/.ssh/authorized_keys ``` # Hadoop安装 登录到`node-master`,下载hadoop,并解压: ``` http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-3.1.3/hadoop-3.1.3.tar.gz tar -xzf hadoop-3.1.3.tar.gz ln -s hadoop-3.1.3 hadoop ``` ## 环境变量设置 1. 添加Hadoop可执行目录到PATH。修改`/home/hadoop/.profile`,添加如下内容: ``` PATH=/home/hadoop/hadoop/bin:/home/hadoop/hadoop/sbin:$PATH ``` 2. 添加hadoop到shell的PATH路径。修改`.bashrc`,添加下面的内容: ``` export HADOOP_HOME=/home/hadoop/hadoop export PATH=${PATH}:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin ``` ## MASTER节点设置 ### 设置JAVA_HOME 这里我安装的是ORACLE版本的JDK,目录`/usr/local/jdk`,修改`~/hadoop/etc/hadoop-env.sh`,设置JAVA_HOME: ``` export JAVA_HOME=/usr/local/jdk ``` ### 设置NameNode的位置 修改`~/hadoop/etc/hadoop/core-site.xml`文件,设置NameNode的路径为node-master的9000端口: ```xml ``` ### 设置HDFS路径 修改`hdfs-site.xml`,内容如下: ```xml ``` 最后一个属性`dfs.replication`表示该集群上的数据被冗余多少倍。注意replication的值不要超过worker节点的实际数量。 ### 设置YARN作为任务调度器 修改`mapred-site.xml`,设置YARN作为默认的MapReduce操作的框架: ```xml ``` ### 配置YARN 修改`yarn-site.xml`。`yarn.resourcemanager.hostname`的值设置为node-master的ip地址: ```xml ``` ## 设置Worker 创建一个名为`workers`的启动脚本,用来启动需要的进程。修改`~/hadoop/etc/hadoop/workers`,把所有的worker节点都加进去。 ### 修改内存分配 默认的内存分配对于内存小于8GB的机器并不合适,所有对低内存的机器需要做一些特殊配置。 一个YARN任务的执行会用用到两种类型的资源: * 应用MASTER(AM)负责监控应用并协调集群中的exector; * AM创建的Executor才会真正的执行任务。对MapReduce任务,exectors上会并行的执行map或者reduce的操作。 两者都是运行在worker节点上。每个worker节点运行一个NodeManager的进程,该进程负责在该节点上创建容器。整个集群被ResourceManager管理,ResourceManger在所有的worker节点上根据容量需求以及当前的负载,进行容器的分配与创建。 为了集群能够正常工作,下面4个配置必须合理的配置: 1. 单个节点上YARN容器最多可以分配多少内存。这个配置的值需要比其他的都大,否则容器分配会被拒,application会失败。但是,这个值不应该是该节点的实际内存大小。该配置是`yarn.nodemanager.resource.memory-mb`,配置在`yarn-site.xml`中; 2. 每个容器可以分配的最大最小内存。如果一个容器申请的内存超过设置的最大值,否则分配会失败,并会被分配成最小内存的整数倍。配置`yarn.scheduler.maximum-allocation-mb`和`yarn.scheduler.minimum-allocation-mb`,都在`yarn-site.xml`文件中配置; 3. ApplicationMaster分配的内存大小。`yarn.app.mapreduce.am.resource.mb`,配置在`mapred-site.xml`中; 4. 每个map或者reduce操作可以分配的内存大小。这个值需要小于最大内存大小。`mapreduce.map.memory.mb`和`mapreduce.reduce.memory.mb`,都配置在`mapred-site.xml`。 以上四个类型的配置之间的关系如下图: ![image](https://www.linode.comhttps://img.qb5200.com/download-x/docshttps://img.qb5200.com/download-x/databases/hadoop/how-to-install-and-set-up-hadoop-cluster/hadoop-2-memory-allocation-new.png) 以2G内存的节点为例,可行的配置如下: 属性 | 值 ---|--- yarn.nodemanager.resource.memory-mb | 1536 yarn.scheduler.maximum-allocation-mb | 1536 yarn.scheduler.minimum-allocation-mb | 128 yarn.app.mapreduce.am.resource.mb | 512 mapreduce.map.memory.mb | 256 mapreduce.reduce.memory.mb | 256 1. 修改`home/hadoop/hadoop/etc/hadoop/yarn-site.xml`,添加如下配置: ```xml ``` 最后一个配置禁用虚拟内存检查。 2. 修改`/home/hadoop/hadoop/etc/hadoop/mapred-site.xml`, 添加如下内容: ```xml ``` ### 格式化HDFS 和正常的单机文件系统一样,HDFS在使用之前也需要格式化。在node-master上,运行如下命令: ```bash hdfs namenode -format ``` 到这里,hadoop的安装完成了,可以运行了。 # 运行和监控 接下来看下如何在NameNode和DataNodes上启动HDFS,以及如何进行监控。 ## HDFS的启停 1. 在node-master上运行下面的命令启动HDFS: ```bash start-dfs.sh ``` 这个命令会在node-master上启动`NameNode`和`SecondaryNameNode`进程,同时在数据节点上创建`DataNode`进程。数据节点根据`workers`文件中的配置。 2. 检查node-master和其他节点上的进程情况,可以通过`jps`命令来查看。在node-master上运行jps,可以看到NameNode和SecondaryNameNode,在worker节点上运行jps课题看到DataNode进程。 3. 在node-master上通过下面的命令开停止hdfs: ``` stop-dfs.sh ``` ## 监控HDFS集群 1. 通过`hdfs dfsadmin`命令可以获得一些有用的信息: 2. 另外HDFS提供了一个Web UI来查看hdfs集群的状态,访问地址: http://node-master-IP:9870 # 参考资料 * [How to Install and Set Up a 3-Node Hadoop Cluster ](https://www.linode.comhttps://img.qb5200.com/download-x/docshttps://img.qb5200.com/download-x/databases/hadoop/how-to-install-and-set-up-hadoop-cluster/#run-and-monitor-hdfs)

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们