Hadoop伪分布式集群搭建学习总结

1、Linux系统环境准备

1.1 安装JDK

1. 准备软件

  上传JDK的安装包,在 /root/software 目录下,可以查看

cd /root/software/
ll

2. 解压压缩包

tar -zxvf jdk-8u221-linux-x64.tar.gz

tar 命令:用于打包并压缩和解包并解压缩文件 使用格式:
打包并压缩:tar -zxcf 打包压缩名 文件名/目录
解包并解压缩:tar -zxvf *.tar.gz格式的打包压缩文件
常用选项:
z:gzip,通过 gzip 格式压缩或者解压缩
-c:指定需要解压的目录,若是未指定,则解压到当前目录 解压成功后,在当前目录下用命令ll查看验证。

3. 配置环境变量
  配置环境变量就是在整个运行环境都可以使用的变量,而路径添加到 PATH 类似于在 Windows 平台下将程序添加到注册表,添加某个路径到 PATH 环境变量后,执行该路径下的文件就不需要输入完整的命令路径而只需要输入命令的文件名。

例如,JDK 的安装目录为 /root/software/jdk1.8.0_221,那么要查看 JDK 的版本,需要输入/root/software/jdk1.8.0_221/bin/java -version,但是如果将 /root/software/jdk1.8.0_221/bin/ 配置到 PATH 下,就只需要直接输入java -version

系统环境变量:对于添加给所有用户的环境变量,直接编辑: “/etc/bashrc"或者”/etc/profile";
用户环境变量:对于添加给某一个用户的环境变量,可以编辑用户 /home 目录下的:" 用户名/.bashrc"或者"用户名/.bash_profile"。

(1)我们配置系统环境变量,使用命令:

vim /etc/profile

(2)在最后加入以下两行内容:

export JAVA_HOME=/root/software/jdk1.8.0_221	# 配置Java的安装目录
export PATH=$PATH:$JAVA_HOME/bin		# 在原PATH的基础上加入JDK的bin目录

export 是把这两个变量导出为全局变量。 大小写必须严格区分。

(3)让配置文件立即生效,使用如下命令:

source /etc/profile

(4)检测 JDK 是否安装成功,使用命令查看 JDK 版本:

java -version

1.2 配置SSH免密登录

  通过前面的操作,已经完成了JDK的安装和基本配置,虽然这个节点已经可以正常使用了,但是依然存在下列问题:
(1)实际工作中,服务器被放置在机房中,同时受到地域和管理的限制,开发人员通常不会进入机房直接上机操作,而是通过远程连接服务器进行相关操作。
(2)在集群开发中,主节点通常会对集群中各个节点频繁地访问,就需要不断输入目标服务器的用户名和密码,这种操作方式非常麻烦并且还会影响集群服务的连续运行。
  为了解决上述问题,可以通过配置 SSH 服务来分别实现远程登录和 SSH 免密登录功能。

1. 下载 SSH 服务并启动
SSH 服务(openssh-server和openssh-clients)如果已经下载好,此处直接启动即可:

/usr/sbin/sshd

SSH 服务启动成功后,会默认开启 22(SSH的默认端口)端口号,可以使用以下命令进行查看:

netstat -tnulp

2. 首先生成密钥对

ssh-keygen
或
ssh-keygen -t rsa   # 提示要输入信息时不需要输入任何东西,直接回车三次即可。

ssh-keygen:生成、管理和转换认证密钥。
-t:指定密钥类型,包括RSA和DSA两种密钥,默认RSA。

生成密钥对后,私钥 id_rsa 和公钥 id_rsa.pub 都已创建成功,并放在 /root/.ssh 目录中,可以查看:

cd /root/.ssh/
ll

3. 将公钥放置到授权列表文件authorized_keys 中,使用命令:

cp id_rsa.pub authorized_keys

验证查看:ll
4. 修改授权列表文件 authorized_keys的权限:

chmod 600 authorized_keys

设置拥有者可读可写,其他人无任何权限(不可读、不可写、不可执行)

5. 验证免密登录是否配置成功

ssh localhost    # 第一次可能要输入一个yes

ssh 主机名    #可以根据命令 hostname 查看

ssh IP地址  # 可以根据命令 ifconfig 查看

远程登录成功后,若想退出,可以使用exit 命令。

2、HDFS伪分布式集群搭建

1. 安装包准备、解压
上传hadoop安装包,存放在/root/software 目录下,并将其解压到当前目录下,查看

tar -zxvf hadoop-2.7.7.tar.gz
ll

进入hadoop安装目录,通过ll命令查看hadoop目录结构:
可以看出,Hadoop 安装目录包括 bin、etc、include、lib、libexec、sbin、share 共 7 个目录以及其他一些文件,下面简单介绍下各目录内容及作用。

(1)bin:存放操作 Hadoop 相关服务(HDFS、YARN)的脚本,但是通常使用 sbin 目录下的脚本。

(2)etc:存放 Hadoop 配置文件,主要包含
core-site.xml、hdfs-site.xml、mapred-site.xml 等从 Hadoop1.0 继承而来的配置文件和
yarn-site.xml 等 Hadoop2.0 新增的配置文件。

(3)include:对外提供的编程库头文件(具体动态库和静态库在 lib 目录中),这些头文件均是用 C++ 定义的,通常用于 C++
程序访问 HDFS 或者编写 MapReduce 程序。

(4)lib:该目录包含了 Hadoop 对外提供的编程动态库和静态库,与 include 目录中的头文件结合使用。

(5)libexec:各个服务对应的 shell 配置文件所在的目录,可用于配置日志输出、启动参数(比如 JVM 参数)等基本信息。

(6)sbin:该目录存放 Hadoop 管理脚本,主要包含 HDFS 和 YARN 中各类服务的启动/关闭脚本。

(7)share:Hadoop 各个模块编译后的 jar 包所在的目录。

2. 配置环境变量hadoop-env.sh
  因为 Hadoop 的各守护进程依赖于 JAVA_HOME 环境变量,所以需要修改“hadoop-env.sh”环境变量文件中的 JAVA_HOME 的值。
首先查找到本机安装的JDK的实际位置,复制该地址:

echo $JAVA_HOME

echo:输出命令
$:引用环境变量的值
JAVA_HOME:环境变量

打开hadoop-env.sh 文件

vim /root/software/hadoop-2.7.7/etc/hadoop/hadoop-env.sh

找到 JAVA_HOME 的参数位置,修改为刚才复制的本机安装JDK的实际位置:

# The java implementation to use.
 export JAVA_HOME=/root/software/jdk1.8.0_221

3. 配置核心组件core-site.xml
  该文件是 Hadoop 的核心配置文件,其目的是配置 HDFS 地址、端口号,以及临时文件目录。使用如下命令打开 “core-site.xml” 文件:

vim /root/software/hadoop-2.7.7/etc/hadoop/core-site.xml

将下面的配置内容添加到 <configuration> </configuration> 中间,保存退出:

<!-- HDFS集群中NameNode的URI(包括协议、主机名称、端口号),默认为 file:/// --> 
<property> 
<name>fs.defaultFS</name> 
<!-- 用于指定NameNode的地址 -->
<value>hdfs://localhost:9000</value> 
</property> 
<!-- Hadoop运行时产生文件的临时存储目录 -->
<property> 
<name>hadoop.tmp.dir</name> 
<value>/root/hadoopData/temp</value> 
</property>

4. 配置文件系统hdfs-site.xml
  该文件主要用于配置 HDFS 相关的属性,例如复制因子(即数据块的副本数)、NameNode 和 DataNode 用于存储数据的目录等。在完全分布式模式下,默认数据块副本是 3 份。 使用如下命令打开“hdfs-site.xml”文件:

vim /root/software/hadoop-2.7.7/etc/hadoop/hdfs-site.xml

将下面的配置内容添加到 <configuration></configuration> 中间,保存退出:

<!-- NameNode在本地文件系统中持久存储命名空间和事务日志的路径 -->
<property> 
<name>dfs.namenode.name.dir</name> 
<value>/root/hadoopData/name</value>
</property> 
<!-- DataNode在本地文件系统中存放块的路径 -->
<property> 
<name>dfs.datanode.data.dir</name> 
<value>/root/hadoopData/data</value> 
</property> 
<!-- 数据块副本的数量,默认为3 -->
<property> 
<name>dfs.replication</name> 
<value>1</value> 
</property>

5. 配置slaves文件
  该文件用于记录 Hadoop 集群所有从节点(HDFS 的 DataNode 和 YARN 的 NodeManager 所在主机)的主机名,用来配合一键启动脚本启动集群从节点(并且还需要保证关联节点配置了 SSH 免密登录)。

打开该配置文件:

vim /root/software/hadoop-2.7.7/etc/hadoop/slaves

可以看到其默认内容为localhost,因为我们搭建的是伪分布式集群,就只有一台主机,所以从节点也需要放在此主机上,所以此配置文件无需修改。

6. 配置hadoop系统环境变量

首先打开 /etc/profile 文件

vim /etc/profile

在文件底部添加如下内容

# 配置Hadoop的安装目录		
export HADOOP_HOME=/root/software/hadoop-2.7.7	
# 在原PATH的基础上加入Hadoop的bin和sbin目录
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

export 是把这两个变量导出为全局变量。 大小写必须严格区分。
**bin:**存放操作Hadoop相关服务(HDFS、YARN)的脚本,但是通常使用sbin目录下的脚本。
**sbin:**该目录存放Hadoop管理脚本,主要包含HDFS和YARN中各类服务的启动/关闭脚本。

让配置文件立即生效:

source /etc/profile

检测hadoop环境变量是否设置成功: 执行下面这个命令后,如果出现hadoop版本信息就说明配置成功

hadoop version

3、HDFS集群测试

1. 格式化文件系统

hdfs namenode -format

执行格式化指令后,必须出现有“successfully formatted”信息才表示格式化成功
需要特别注意的是,上述格式化指令只需要在HDFS集群初次启动前执行即可,后续重复启动就不再需要执行格式化了
2. 启动和关闭HDFS集群

单节点逐个启动、关闭

hadoop-daemon.sh start namenode
hadoop-daemon.sh start datanode
hadoop-daemon.sh start secondarynamenode
hadoop-daemon.sh stop namenode

脚本一键启动和关闭(常用)

start-dfs.sh
stop-dfs.sh

查看进程启动情况

jps

通过UI查看HDFS的运行状态
  HDFS 集群正常启动后,它默认开放了50070端口,用于监控HDFS集群。通过UI可以方便地进行集群的管理和查看,只需要在本地操作系统的浏览器输入集群服务的IP和对应的端口号即可访问。

  通过本机的浏览器访问http://localhost:50070http://本机IP地址:50070查看 HDFS 集群状态

4、Yarn 伪分布式集群搭建

1. 配置环境变量 yarn-env.sh
  该文件是 YARN 框架运行环境的配置,同样需要修改 JDK 所在位置。使用如下命令打开“yarn-env.sh”文件:

vim /root/software/hadoop-2.7.7/etc/hadoop/yarn-env.sh

找到JAVA_HOME参数位置,将前面的#去掉,将其值修改为本机安装的JDK的实际位置:

#some Java parameters
export JAVA_HOME=/root/software/jdk1.8.0_221

2. 配置计算框架mapred-site.xml
  该文件是 MapReduce 的核心配置文件,用于指定MapReduce运行时框架。此处应该指定 yarn,另外的可用值还有 local (本地的作业运行器)和 classic(MR1运行模式),默认为 local。
  在 $HADOOP_HOME/etc/hadoop/ 目录中默认没有该文件,需要先通过如下命令将文件复制并重命名为 “mapred-site.xml”:
cp mapred-site.xml.template mapred-site.xml

  接着,打开 “mapred-site.xml” 文件进行修改:

vim /root/software/hadoop-2.7.7/etc/hadoop/mapred-site.xml

将下面的配置内容添加到 <configuration></configuration> 中间,保存退出:

<!-- 指定使用 YARN 运行 MapReduce 程序,默认为 local -->
<property> 
<name>mapreduce.framework.name</name> 
<value>yarn</value> 
</property>

3. 配置Yarn系统yarn-site.xml
  本文件是YARN 框架的核心配置文件,用于配置 YARN 进程及 YARN 的相关属性。
  首先需要指定 ResourceManager 守护进程所在主机,默认为0.0.0.0,即当前设备,所以这里我们无需再次指定;其次需要设置 NodeManager 上运行的辅助服务,需配置成 mapreduce_shuffle 才可运行 MapReduce 程序。

使用如下命令打开该配置文件:

vim /root/software/hadoop-2.7.7/etc/hadoop/yarn-site.xml

将下面的配置内容添加到 <configuration></configuration> 中间:

<!-- NodeManager上运行的附属服务,也可以理解为 reduce 获取数据的方式 -->
<property> 
<name>yarn.nodemanager.aux-services</name> 
<value>mapreduce_shuffle</value> 
</property>

4. Yarn 集群测试
启动和关闭Yarn集群(需要保证HDFS集群是启动状态):脚本一键启动和关闭

start-yarn.sh
stop-yarn.sh

查看进程启动情况

jps

打印结果中多了 2 个进程,分别是 ResourceManagerNodeManager,如果出现了这 2 个进程表示进程启动成功。
通过UI查看Yarn运行状态
  YARN 集群正常启动后,它默认开放了8088端口,用于监控 YARN 集群。通过 UI 可以方便地进行集群的管理和查看,只需要在本地操作系统的浏览器输入集群服务的IP和对应的端口号即可访问。

  通过本机的浏览器访问http://localhost:8088http://本机IP地址:8088查看 YARN 集群状态

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值