赞
踩
在讲述Hadoop集群搭建之前,首先要了解Hadoop和集群两个名词,Hadoop是由Apache基金会开发的分布式系统基础架构,简单理解就是大数据技术应用的基础。集群可以理解为多台装有hadoop的服务器。搭建Hadoop集群的目的就是为了管理多台服务器,使多台服务器之间能够协调工作。本文选择了3台阿里云服务器。从下图中可以对整个大数据架构有了大体的了解。
Hadoop主要有HDFS(分布式文件存储系统)、Yarn(集群资源管理与调度)和MapReduce(分布式计算框架)组成。Hadoop集群中分为主机(master)和从机(slave),本文配置一台阿里云服务器为主机和从机。其余两台为从机。HDFS(分布式文件存储系统)在主机上称为Namenode节点,在从机上称为Datanode节点。Namenode维护HDFS的文件系统树以及文件树中所有的文件和文件夹的元数据。可以理解为win系统中文件夹属性中的那些信息,Datanode是存储和检索数据的地方。可以理解为win系统中文件夹中实际数据。
Yarn(集群资源管理与调度)在主机上称为ResourceManager节点,在从机上称为NodeManager。ResourceManager是全局的资源管理器,负责整个系统的资源管理和分配,NodeManager是节点上的资源和任务管理器。定时地向ResourceManager汇报本节点的资源使用情况。
MapReduce(分布式计算框架)顾名思义就是计算框架,有啥特点呢,就是分布式,可以把大型数据处理任务分解成很多单个简单的任务,然后再把各个处理结果合在一起。计算过程可以百度了解。
网上教程多采用虚拟机创建多个linux系统来搭建Hadoop集群,我觉得虚拟机有弊端就采用了阿里云服务器。阿里云服务器购买选配过程后续再介绍。
1)hosts文件修改
hosts是一个没有扩展名的系统文件,其基本作用就是将一些常用的网址域名与其对应的 IP 地址建立一个关联“ 数据库 ”。当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从hosts文件中寻找对应的 IP 地址,一旦找到,系统就会立即打开对应网页,如果没有找到,则系统会将网址提交 DNS 域名解析服务器进行 IP 地址的解析。就如你访问本地的时候,你输入127.0.0.1和localhost是一致的。hosts文件修改就是在添加三台服务器IP和域名的映射。
vi /etc/hosts
添加一下映射
- 172.27.66.8 master
- 172.27.66.10 slave1
- 172.27.66.9 slave2
后续访问域名和访问IP的效果是一样的。
按照IP地址修改三台服务器的主机名
- hostnamectl set-hostname master
- hostnamectl set-hostname slave1
- hostnamectl set-hostname slave2
2)SSH免密登录
SSH免密登录是为了各个服务器之间访问不在需要密码。三台服务器分别执行一遍如下命令。执行完该命令会在root/.ssh下生成密钥。
- ssh-keygen -t rsa
- #在slave1和slave2下分别把id_rsa.pub发送到主机上,并重新命令
- scp id_rsa.pub root@master:~/.ssh/id_rsa.pub.slave1
- scp id_rsa.pub root@master:~/.ssh/id_rsa.pub.slave2
在主机root/.ssh下把id_rsa.pub、id_rsa.pub.slave1、id_rsa.pub.slave2追加到authorized_keys中。
- cat id_rsa.pub >> authorized_keys
- cat id_rsa.pub.slave1 >> authorized_keys
- cat id_rsa.pub.slave2 >> authorized_keys
然后把authorized_keys传回到slave1和slave2中
- scp authorized_keys root@slave1:~/.ssh
- scp authorized_keys root@slave2:~/.ssh
最后修改文件权限。
- chmod 755 ~
- chmod 700 ~/.ssh
- chmod 600 ~/.ssh/authorized_keys
hadoop各组件软件下载地址:
清华镜像:https://mirrors.tuna.tsinghua.edu.cn/apache/
各模块配置文件修改
Hadoop的版本为3.2.1,软件包hadoop-3.2.1.tar.gz解压到/usr/local下,
tar -zxvf hadoop-3.2.1.tar.gz
安装完成后进入/usr/local/hadoop-3.2.1/etc/hadoop,修改配置文件为:core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml、workers,
- #打开文件的命令
- vi core-site.xml
core-site.xml在 ----之间添加如下配置,注意修改hadoop.tmp.dir路径(按照自己系统的路径)
- <configuration>
- <property>
- <name>fs.default.name</name>
- <value>hdfs://master:9000</value>
- </property>
- <property>
- <name>hadoop.tmp.dir</name>
- <value>file:/usr/local/hadoop-3.2.1/tmp</value>
- </property>
- <property>
- <name>io.file.buffer.size</name>
- <value>131072</value>
- </property>
- </configuration>
hdfs-site.xml在 ----之间添加如下配置,注意修改dfs.datanode.data.dir和dfs.namenode.name.dir路径。dfs.replication副本参数。同datanode个数。
- <configuration>
- <property>
- <name>dfs.namenode.name.dir</name>
- <value>file:/usr/local/hadoop-3.2.1/hdfs/namenode</value>
- </property>
-
- <property>
- <name>dfs.datanode.data.dir</name>
- <value>file:/usr/local/hadoop-3.2.1/hdfs/datanode</value>
- </property>
-
- <property>
- <name>dfs.replication</name>
- <value>2</value>
- </property>
-
- <property>
- <name>dfs.permissions</name>
- <value>false</value>
- <description>need not permissions</description>
- </property>
-
- <property>
- <name>dfs.namenode.http-address</name>
- <value>master:50070</value>
- </property>
- </configuration>
yarn-site.xml在 ----之间添加如下配置。
- <configuration>
- <!-- Site specific YARN configuration properties -->
- <property>
- <name>yarn.resourcemanager.hostname</name>
- <value>master</value>
- </property>
-
- <property>
- <description>The address of the applications manager interface in the RM.</description>
- <name>yarn.resourcemanager.address</name>
- <value>${yarn.resourcemanager.hostname}:8032</value>
- </property>
-
- <property>
- <description>The address of the scheduler interface.</description>
- <name>yarn.resourcemanager.scheduler.address</name>
- <value>${yarn.resourcemanager.hostname}:8030</value>
- </property>
-
- <property>
- <description>The http address of the RM web application.</description>
- <name>yarn.resourcemanager.webapp.address</name>
- <value>${yarn.resourcemanager.hostname}:18088</value>
- </property>
-
- <property>
- <description>The https adddress of the RM web application.</description>
- <name>yarn.resourcemanager.webapp.https.address</name>
- <value>${yarn.resourcemanager.hostname}:18090</value>
- </property>
-
- <property>
- <name>yarn.resourcemanager.resource-tracker.address</name>
- <value>${yarn.resourcemanager.hostname}:8031</value>
- </property>
-
- <property>
- <description>The address of the RM admin interface.</description>
- <name>yarn.resourcemanager.admin.address</name>
- <value>${yarn.resourcemanager.hostname}:8033</value>
- </property>
-
- <property>
- <name>yarn.nodemanager.aux-services</name>
- <value>mapreduce_shuffle</value>
- </property>
- </configuration>
mapred-site.xml在 ----之间添加如下配置。
- <configuration>
- <property>
- <name>mapreduce.framework.name</name>
- <value>yarn</value>
- </property>
-
- <property>
- <name>mapred.job.tracker</name>
- <value>master:9001</value>
- </property>
- </configuration>
workers下添加如下内容。
- slave1
- slave2
环境变量设置
hadoop-env.sh、yarn-env.sh两个文件下,添加java的地址,环境变量的目的就是为了便于访问。
export JAVA_HOME=/usr/local/jdk1.8.0_261
java的版本为jdk-8u261-linux-x64.tar.gz,解压到/usr/local下
tar -zxvf jdk-8u261-linux-x64.tar.gz -C /usr/local
设置环境变量
- vi /etc/profile
- #添加如下内容
- JAVA_HOME=/usr/local/jdk1.8.0_261
- CLASSPATH=$JAVA_HOME/lib/
- PATH=$PATH:$JAVA_HOME/bin
- export PATH JAVA_HOME CLASSPATH
- #立即生效环境变量
- source /etc/profile
- #将主机下配置好的hadoop文件整体发送到两个从机上
- scp -r /usr/local/hadoop-3.2.1 root@slave1:/usr/local
- scp -r /usr/local/hadoop-3.2.1 root@slave2:/usr/local
-
- #添加hadoop的环境变量
- export HADOOP_HOME=/usr/local/hadoop-3.2.1
- export PATH="$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH"
- export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
-
- #在主机下格式化namenode
- /usr/local/hadoop-3.1.1/bin/hdfs namenode -format
- #启动和关闭HDFS
- start-dfs.sh
- stop-dfs.sh
- #启动和关闭yarn
- start-yarn.sh
- stop-yarn.sh
- #启动全部
- start-all.sh
- stop-all.sh
启动集群后在主机上输入jps显示
在从机上输入jps显示
输入hdfs dfsadmin -report显示
往期精选
牛x!一款比传统数据库查询快近 200 倍的数据库,来看一看?
华为鸿蒙 OS 尝鲜,跑了个 “hello world”!跑通后,我特么开始怀疑人生...
一款免费数据库管理工具,比 Navicat 更好有用,功能更强大,强烈推荐!
为什么 MySQL 不推荐使用 uuid 或者雪花 id 作为主键?
每天使用 Spring 框架,那你知道 lazy-init 懒加载原理吗?
IntelliJ IDEA 中被低估的功能,利用项目源码一键绘制成 UML 类图
必须了解的mysql三大日志-binlog、redo log和undo log
点个赞,就知道你“在看”!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。