vlambda博客
学习文章列表

HDFS之伪分布式模式搭建

This browser does not support music or audio playback. Please play it in Weixin or another browser.

CentOS安装JDK

  1. 首先上传JDK到CentOS中

  2. 将jdk解压到 /etc/apps/目录下,如果不存在apps目录,可以新建

# 将jdk解压到/etc/apps/目录下,其实具体解压到哪里并不重要,只要记住解压路径即可tar -zxvf jdk-8u152-linux-x64.tar.gz -C /opt/apps/# 为jdk 更改别名mv jdk-8u152-linux-x64.tar.gz jdk# 配置环境变量vim /etc/profile# 在最后一行,添加如下两句,JAVA_HOME即Java的解压目录,windows也可称为其安装目录export JAVA_HOME=/opt/apps/jdkexport PATH=$PATH:JAVA_HOME/bin:$JAVA_HOME/lib# 刷新一下配置文件source /opt/profile

注:其实profile还有一个bash_profile,即/root/.bash_profile,这个profile是局部的,仅仅对当前用户有效,因此,添加环境变量到配置文件中,最好使用全局的profile。

CentOS安装Hadoop

# 解压缩Hadoop压缩包到 /opt/apps/tar -zxvf hadoop-2.7.6.tar.gz -C /opt/apps/# 重命名mv hadoop-2.7.6.tar.gz/ hadoop# 编辑Hadoop的配置文件vim /etc/profileexport HADOOP_HOME=/opt/apps/hadoopexport PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin# 执行配置文件source /etc/profile

HDFS体系结构

HDFS采用的是master/slaves这种主从结构模型来管理数据

这种结构模型主要由四个部分组成:

  1. Client(客户端)

    1. HDFS实际上提供了各种语言操作HDFS的接口

    2. 与NameNode进行交互,获取文件的存储位置(读/写两种操作)

    3. 与DataNode进行交互,写入数据,或者读取数据

    4. 上传时分块进行存储,读取时分片进行读取

  2. NameNode(名称节点)

    1. 管理HDFS的命名空间,并以fsimage和edit进行持久化保存

    2. 在内存中维护数据块的映射信息

    3. 实施副本冗余策略

    4. 处理客户端的访问请求

    5. namenode进程只有一个(HA除外)

  3. DataNode(数据节点)

    1. 存储真正的数据(块进行存储)

    2. 执行数据块的读写操作

    3. 心跳机制(3秒)

  4. SecondaryNameNode(备份)

    1. 不能实时同步,不能作为热备份

    2. 最好不要和NameNode在同一个节点上

    3. 帮助NameNode合并fsimage和edit文件

    4. 注意事项

HDFS安装模式分类

本地模式

特点:

  1. 运行在单台机器上

  2. 没有分布式概念,使用的是本地文件系统

用途:

  1. 用于对MapReduce程序的逻辑进行调试,确保程序的正确性

  2. 由于在本地模式下测试和调试MapReduce程序较为方便,因此,这种模式适宜用在开发阶段

伪分布式模式

特点:

  1. 在一台机器上安装,使用的是分布式文件系统,非本地文件系统

  2. HDFS设计到的相关守护进程(NameNode、DataNode、secondarynamenode)都运行在一台机器上,都是独立Java进程

用途:

比Standalone mode多了代码调试功能,允许检查内存使用情况,HDFS输入输出,以及其它守护进程交互。

完全分布式模式

特点:

真实环境,多台机器,共同配合,来构建一个完整的分布式文件系统。

真实环境,HDFS中的相关守护进程会分布在不同的机器中,比如:

  1. NameNode尽可能单独部署在一台硬件性能相对来说比较好的机器中

  2. 其他的每台机器上都会部署一个DataNode守护进程,一般的硬件环境即可

  3. secondarynamenode守护进程最好不要和NameNode在同一台机器上。

伪分布式模式的搭建

  • 防火墙关闭确认

systemctl stop firewalldsystem disable firewalld.service
# 最好也把selinux关闭掉,这是Linux的一个安全机制,进入文件中将SELINUX设置为disabled
vim /etc/selinux/config'''''SELINUX=disabled'''''
  • 伪分布式相关文件的配置

  • core-site.xml的配置

cd $HADOOP_HOME/etc/hadoopsudo vim core-site.xml
<configuration> <!--配置分布式文件系统的schema和ip以及port,默认8020--> <property> <name>fs.defaultFS</name> <value>hdfs://localhost/</value> </property></configuration>
扩展:Hadoop1.x默认的端口是9000,Hadoop2.x默认的端口是8020,使用哪一个都可以
  • hdfs-site.xml配置

sudo vim hdfs-site.xml
<configuration> <!--配置副本数,注意,伪分布式只能是1--> <property> <name>dfs.replication</name> <value>1</value> </property></configuration>
  • hadoop-env.sh的配置:指定jdk的环境

sudo vim hadoop-env.sh# The java implementation to use
export JAVA_HOME=/opt/apps/jdk