赞
踩
Hadoop集群有三种运行模式,单机模式,伪分布模式、完全分布式模式。
单机模式:只有一个JVM进程数,只运行在一台机器上;
伪分布模式:有多个JVM进程数,运行在同一台机器上;
完全分布式模式:多个JVM进程数,运行在三台或三台以上的机器上。
此安装教程是在root用户下进行,搭载单机模式 =====> 搭载伪分布式
如果在普通用户下,要注意权限、环境变量等,使用sudo命令。
具体配置请查看: CentOS 7 linux网络配置、修改主机名、修改网络映射、Ping外网、连接xshell
具体配置请查看: vim详解 以CentOs 7系统为例
1.使用xshell文件传输工具上传JDK
上传jdk-8u361-linux-x64.tar.gz到/opt目录下
2 查看Linux是否安装java jdkrpm -qa | grep java
如果查询有其他java版本,则需要卸载
rpm -e --nodeps 查询的包名
3.cd至上传目录
tar 指令解压:tar -zxvf jdk-8u361-linux-x64.tar.gz
4.重命名为jdk(方便配置环境变量)mv jdk1.8.0_361/ jdk
5.配置环境变量
vim /etc/profile
在这个文件最后换行添加如下三行:
# JDK export JAVA_HOME=/opt/jdk export PATH=$JAVA_HOME/bin:$PATH
- 1
- 2
- 3
6 使这个配置文件生效source /etc/profile
7 验证(查看java版本)
java -version
1.使用xshell文件传输工具上传hadoop
上传hadoop-3.1.3.tar到/opt目录下>
2.cd 至上传opt目录
解压安装包到/opt目录tar -zxvf hadoop-3.1.3.tar.gz
3.重命名为hadoop(方便配置环境变量)
4.配置环境变量vim /etc/profile
在这个文件最后换行添加如下三行:
#HADOOP export HADOOP_HOME=/opt/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
- 1
- 2
- 3
6 使这个配置文件生效
source /etc/profile
7 验证(查看hadoop版本)
hadoop version
现在我们已经初步安装了jdk和hadoop环境
接下来进一步配置hadoop分布式
进行免密登录需要安装ssh
安装ssh服务:
1.查看是否安装ssh
rpm -qa | grep ssh
如果有openssh-clients、openssh-server,则不需要安装
如果没有,则需要安装,安装命令如下:yum install -y openssh-clients openssh-server
2.启动ssh服务
service sshd start|stop|restart|status
start:开启、restart:重启、stop:关闭、status:状态,根据自己需要选择
配置免密登录
作用举例:启动yarn服务需要输入系统密码(节省时间)
1.本机生成公钥、私钥和验证文件
ssh-keygen -t rsa
回车三次即可
2.将登录信息复制到验证文件
ssh-copy-id hadoop
hadoop为主机名
注意:输入该指令后需要自行输入登录密码
输入时系统输入栏密码不显示(正常输入回车即可)
这样就配置好免密登录了
可以尝试ssh登录命令查看是否配置成功:ssh hadoop
exit登出
1.进入Hadoop配置目录:
cd /opt/hadoop/etc/hadoop/
vim hadoop-env.sh
在这个配置文件最后换行添加
export JAVA_HOME=/opt/jdk
vi core-site.xml
将这个配置文件最后的标签内容修改为
<configuration> <!--配置hdfs文件系统的命名空间--> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> <!-- 配置临时数据存储目录 --> <property> <name>hadoop.tmp.dir</name> <value>/opt/hadoop/tmp/</value> </property> </configuration>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
fs.defaultFS:这里fs表示文件系统和default.name表示名称节点
其值为hdfs://localhost:9000,9000为端口号hadoop.tmp.dir : hadoop文件系统依赖的基本配置,很多配置路径都依赖它,默认路径设置在/tmp下很不安全,Linux在重新启动时,很可能就删除这个路径下的文件。因此在安全分布式集群下,我们都会在etc/hadoop/core-site.xml重新设置这个路径。
vi etc/hadoop/hdfs-site.xml
<configuration> <!--指定HDFS副本的数量--> <property> <name>dfs.replication</name> <value>1</value> </property> <!--设置默认端口,如果不加上会导致启动hadoop-3.1.0后无法访问50070端口查看HDFS管理界面,hadoop-2.7.7可以不加--> <property> <name>dfs.http.address</name> <value>hadoop:50070</value> </property> </configuration>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
配置好HDFS文件系统后首次启动需要进行格式化
注意:不可随意格式化namenode,格式化会删除namenode image和edits文件
再创建新的 image 和 edits,数据将会丢失,需要谨慎使用!!
格式化命令:
hdfs namenode -format
格式化成功!
格式化成功后,会在hadoop.tmp.dir配置的/opt/hadoop/tmp目录生成目录dfs/name/current/,里面包含几个文件如下:
fsimage_*:
元数据永久性检查点,包含hadoop文件系统中的所有目录和文件inode的序列化信息。fsimage_*.md5文件:
md5校验文件,用于确保fsimage文件的正确性,可以作用于磁盘异常导致文件损坏的情况。seen_txid文件
这个文件中保存了一个事务idVERSION文件
VERSION是java属性文件,内容大致如下:namespaceID=578053814 clusterID=CID-90f1e4c5-54d1-42f9-b7eb-6bb8f3783f7f cTime=1686995205902 storageType=NAME_NODE blockpoolID=BP-1828331363-192.168.233.210-1686995205902 layoutVersion=-64
- 1
- 2
- 3
- 4
- 5
- 6
namespaceID是文件系统唯一标识符,在文件系统首次格式化之后生成,在引入Federation特性后,可能会有多个namespace。
clusterID是系统生成或手动指定的集群ID,在-clusterID选项中可以使用它。
cTime表示Namenode存储的创建时间。
storageType表示这个文件存储的是什么进程的数据结构信息(如果是Datanode,则为DATA_NODE)。
blockpoolID表示每一个Namespace对应的块池id,这个id包括了其对应的Namenode节点的ip地址。
layoutVersion表示HDFS永久性数据结构的版本信息,只要数据结构变更,版本号也要递减,此时的HDFS也需要升级,否则磁盘仍旧使用旧版本的数据结构,这会导致新版本的Namenode无法使用。
1.进入Hadoop配置目录:
cd /opt/hadoop/etc/hadoop/
vim yarn-site.xml
<configuration> <!--RM的hostname--> <property> <name>yarn.resourcemanager.hostsname</name> <value>hadoop</value> </property> <!--NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序--> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
vim mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
- 1
- 2
- 3
- 4
- 5
- 6
yarn 是一种资源管理和作业调度技术,作为Hadoop 的核心组件之一,负责将系统资源分配给在 Hadoop 集群中运行的各种应用程序,并调度要在不同集群节点上执行的任务,其基本思想是将资源管理和作业调度/监视的功能分解为单独的 daemon,
方法一:
vim /etc/profile
# HADOOP_USER
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
方法二:
vim /etc/
进入hadoop sbin目录cd $HADOOP_HOME/sbin
vim start-dfs.sh
vim stop-dfs.sh
头部添加以下内容#!/usr/bin/env bash HDFS_DATANODE_USER=root HADOOP_SECURE_DN_USER=hdfs HDFS_NAMENODE_USER=root HDFS_SECONDARYNAMENODE_USER=root
- 1
- 2
- 3
- 4
- 5
vim start-yarn.sh
vim stop-yarn.sh
头部添加以下内容#!/usr/bin/env bash YARN_RESOURCEMANAGER_USER=root HADOOP_SECURE_DN_USER=yarn YARN_NODEMANAGER_USER=root
- 1
- 2
- 3
- 4
启动hdfs服务:
start-dfs.sh
三大服务节点:
NameNode:
NameNode 是一个中心服务器,负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。Namenode执行文件系统的名字空间操作,比如打开、关闭、重命名文件或目录。Secondary NameNode:
Secondary NameNode 并不是 NameNode 的热备机,而是定期从 NameNode 拉取 fsimage和editlog文件,并对两个文件进行合并,形成新的 fsimage 文件并传回 NameNode,这样做的目的是减轻 NameNode 的工作压力,本质上 SNN 是一个提供检查点功能服务的服务点。DataNode:
DataNode 负责数据块的实际存储和读写工作,Block 默认是128MB,当客户端上传一个大文件时,HDFS 会自动将其切割成固定大小的 Block,为了保证数据可用性,每个 Block 会以多备份的形式存储,默认是3份。
启动yarn服务
start-yarn.sh
ResourceManager:
ResourceManager 通常在独立的机器上以后台进程的形式运行,它是整个集群资源的主要协调者和管理者。NodeManager
NodeManager 是 YARN 集群中的每个具体节点的管理者。主要负责该节点内所有容器的生命周期的管理,监视资源和跟踪节点健康。
启动命令:
start-all.sh
查看结果:
jps
如果没有缺少节点则配置成功
缺少节点则查验节点的配置文件
停止命令:
stop-all.sh
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。