一、Hadoop学习:Hadoop启动 & HDFS入门

一. Hadoop的启动


1. 启动方式

要启动 Hadoop 集群,需要启动 HDFS 和 YARN 两个集群。

注意:首次启动 HDFS 时,必须对其进行格式化操作。本质上是一些清理和准备工作,因为此时的 HDFS 在物理上还是不存在的。

使用命令:

hdfs namenode -format 或者 hadoop namenode -format

关于hdfs的格式化:

首次启动需要进行格式化

  • 格式化本质是进行文件系统的初始化从操作,创建一些自己所需要 的文件;
  • 格式化之后,集群启动成功,后续再也不需要进行格式化;
  • 格式化的操作在 hdfs 的主角色(namenode)所在的机器上操作;
1.1 单节点逐个启动

在主节点上使用以下命令启动 HDFS NameNode:

hadoop-daemon.sh start namenode

在每个从节点上使用以下命令启动 HDFS DataNode:

hadoop-daemon.sh start datanode

在主节点上使用以下命令启动 YARN ResourceManager:

yarn-daemon.sh start resourcemanager

在每个从节点上使用以下命令启动 YARN nodemanager:

yarn-daemon.sh start nodemanager

以上脚本位于$HADOOP_PREFIX/sbin/目录下。如果想要停止某个节点上某个角色,只需要把命令中的 start 改成 stop 即可。

1.2. 脚本一键启动

如果配置了 etc/hadoop/slaves 和 ssh 免密登录,则可以使用程序脚本启动所有 Hadoop两个集群的相关进程,在主节点所设定的机器上执行。

hdfs:$HADOOP_PREFIX/sbin/start-dfs.sh
yarn:$HADOOP_PREFIX/sbin/start-yarn.sh

停止集群:

stop_dfs.sh、stop-yarn.sh




二. HDFS 入门


1.HDFS 基本概念

1.1 HDFS 介绍

        HDFS是 Hadoop Distribute File System 的简称,意为:Hadoop 分布式文件系统。是Hadoop核心组件之一,作为最底层的分布式存储服务而存在。分布式文件系统解决的问题就是大数据存储。它们是横跨在多台计算机上的存储系统。分布
式文件系统在大数据时代有着广泛的应用前景,它们为存储和处理超大规模数据提供所需的扩展能力。

1.2 HDFS 设计目标
  • 1)硬件故障是常态,HDFS 将有成百上千的服务器组成,每一个组成部分都有可能出现故障。因此故障的检测和自动快速回复是 HDFS 的核心架构目标。
  • 2)HDFS 上的应用与一般的应用不同,它们主要是以流式读取数据。HDFS 被设计成适合批量处理,而不是用户交互式的。相较于数据访问的反应时间,更注重数据访问的高吞吐量。
  • 3)典型的 HDFS 文件大小是 GB 到 TB 的级别,所以,HDFS 被调整成支持大文件。它应该提供很高的聚合数据带宽,一个集群中支持数百个节点,一个集群中还应该支持千万级别的文件。
  • 4)大部分 HDFS 应用对文件要求的是 write-one-read-many 访问模型。一个文件一旦创建、写入、关闭之后就不需要修改了。这一假设简化了数据一致性问题,使高吞吐量的数据访问成为可能。
  • 5)移动计算的代价比之移动数据的代价低。一个应用请求的计算,离它操作的数据越近就越高效,这在数据达到海量级别的时候更是如此。将计算移动到数据附近,比之将数据移动到应用所在显然更好。
  • 6)在异构的硬件和软件平台上的可移植性。这将推动需要大数据集的应用更广泛地采用 HDFS作为平台。

2.HDFS重要特性

        首先,它是一个文件系统,用于存储文件,通过统一的命名空间目录树来定位文件;
        其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。

2.1 master/slave 架构

        HDFS 采用 master/slave 架构。一般一个 HDFS 集群是有一个 Namenode 和一定数目的 Datanode 组成。Namenode 是 HDFS 集群主节点,Datanode 是 HDFS 集群从节点,两种角色各司其职,共同协调完成分布式的文件存储服务。

2.2 分块存储

        HDFS 中的文件在物理上是分块存储 (bolock)的,块的大小可以通过配置参数来规定,默认大小在 hadoop2.x版本中是128M。

2.3 名字空间(NameSpace)

        HDFS 支持传统的层次型文件组织结构。用户或者应用程序可以创建目录,然后将文件保存在这些目录里。文件系统名字空间的层次结构和大多数现有的文件系统类似,用户可以创建、删除、移动或重命名文件。
        Namenode 负责维护文件系统的名字空间,任何对文件系统名字空间或属性的修改都将被 Namenode 记录下来。
        HDFS 会给客户端提供一个统一的抽象目录树,客户端通过路径来访问文件,形如:

hdfs://namenode:port/dir-a/dir-b/dir-c/file.data

2.4 Namenode 元数据管理

        我们把目录结构及文件分块位置信息叫做元数据。
        Namenode 负责维护整个hdfs 文件系统的目录树结构,以及每一个文件所对应的 block 块信息(block 的 id,以及现在的datanode 服务器)。

2.5 Datanode 数据存储

        文件的各个 block 的具体存储管理由 datanode 节点承担。每一个 block 都可以再多个
datanode 上。Datanode 需要定时向 Namenode 汇报自己持有的 block 信息。存储多个副本(副本数量也可以通过参数设置dfs.replication,默认是3)

2.6 副本机制

        为了容错,文件的所有 block 都会有副本。每个文件的 block 大小和副本系数都是可配置的。应用程序可以指定某个文件的副本数目。副本系数可以再文件创建的时候指定。也可以再之后改变。

2.7 一次写入,多次读出

        HDFS 是设计成适应“一次写入,多次读出”的场景,且不支持文件的修改。正因为如此,HDFS 适合用来做大数据分析的底层存储服务,并不适合用来做网盘等应用,因为,修改不方便,延迟大,网络开销大,成本太高。



3. HDFS 基本操作


3.1 Shell 命令行客户端

Hadoop提供了文件系统的 shell 命令行客户端,使用方法如下:
        hadoop fs <args> 文件系统 shell 包括与 Hadoop 分布式文件系统(HDFS)以及Hadoop支持的其他文件系统(如本地FS,HFTP FS,S3 FS 等)直接交互的各种类似 shell 的命令。所有FS shell 命令都将路径URI作为参数。URI格式为 scheme://authority/path。对于 HDFS,该 scheme 是hdfs,对于本地 FS,该 scheme 是 file 。scheme 和 authority 是可选的。如果未指定,则使用配置中指定的默认方案。
对于 HDFS ,命令示例如下:

hadoop fs -ls hdfs://namenode:host/parent/child
hadoop fs -ls /parent/child fs.defaultFS 中有配置

对于本地文件系统,命令示例如下:

hadoop fs -ls file:///root/

如果使用的文件系统是 HDFS ,则使用 hdfs dfs 也是可以的,此时

hadoop fs \<args\> = hdfs dfs \<args\>
3.2 Shell 常用命令介绍
  • -ls
    使用方法:hadoop fs -ls [-h] [-k]
    功能:显示文件、目录信息。
    示例:
hadoop fs -ls /user/hadoop/file1
  • -mkdir
    使用方法:hadoop fs -mkdir [-p]
    功能:在 hdfs 上创建目录,-p表示会创建路径中的各项父目录
    示例:
hadoop fs -mkdir -p /user/hadoop/dir1
  • -put
    使用方法:hadoop fs -put [-f] [-p] [-|…].
    功能:将单个 src 或多个 srcs 从本地文件系统复制到目标文件系统。
    -p:保留访问和修改时间,所有权和权限
    -f :覆盖目的地(如果已经存在)
    示例:
hadoop fs -put -f localfile1 localfile2 /user/hadoop/hadoopdir
  • -get
    使用方法:hadoop fs -get [-ignorecrc] [-crc] [-p] [-f]
    -ignorecrc:跳过对下载文件的 CRC 检查
    -crc:为下载的文件写 CRC 校验和
    功能:将文件复制到本地文件系统。
    示例:
hadoop fs -get hdfs://host:port/user/hadoop/file localfile
  • -appendToFile
    使用方法:hadoop fs -appendToFile …
    功能:追加一个文件到已经存在的文件末尾
    示例:
hadoop fs -appendToFile localfile /hadoop/hadoopfile
  • -cat
    使用方法:hadoop fs -cat [-ignoreCrc] URI [URI …]
    功能:显示文件内容到 stdout

  • -tail
    使用方法:hadoop fs -tail [-f] URI
    功能:将文件的最后一千字节内容显示到 stdout

  • -f : 选项将在文件增长时输出附加数据
    示例:
hadoop fs tail /hadoop/hadoopfile
  • -chgrp
    使用方法:hadoop fs -chgrp [-R] GROUP URI [URI …]
    功能:更改文件组的关联。用户必须是文件的所有者,否则是超级用户

  • -chmod
    功能:改变文件的权限,使用 -R 将使改变在目录结构下递归进行。
    示例:
hadoop fs -chmod 666 /hadoop/hadoopfile
  • -chown
    功能:改变文件的拥有者。使用 -R 将使改变在目录架构下递归进行。
    示例:
hadoop fs -chown someuser:somegrp  /hadoop/hadoopfile
  • -copyFromLocal
    使用方法:hadoop fs -copyFromLocal URI
    功能:从本地文件系统中拷贝文件到 hdfs 路径去
    示例:
hadoop fs -copyFromLocal /root/1.txt  /
  • -copyToLocal
    功能:从hdfs 拷贝到 本地
    示例:
hadoop fs -copyToLocal /aaa/jdk.jar.gz
  • -cp
    功能:从hdfs 的一个路径拷贝 hdfs 的另一个路径
    示例:
hadoop fs -cp /aaa/jdk.tar.gz /bbb/jdk.tar.gz.2
  • -mv
    功能:在 hdfs 目录中移动文件
    示例:
hadoop fs -mv /aaa/jdk.tar.gz
  • -getmerge
    功能:合并下载多个文件
    示例:比如 hdfs 的目录 /aaa/ 下有多个文件:log.1,log.2,log.3,…
hadoop fs -getmerge /aaa/log.* ./log.sum
  • -rm
    功能:删除指定的文件。只删除非空目录和文件。-r 递归删除。
    示例:
hadoop fs -rm -r /aaa/bbb/
  • -df
    功能:统计文件系统的可用空间信息
    示例:
hadoop fs -df -h /
  • -du
    功能:显示目录中所有文件大小,当只指定一个文件时,显示此文件的大小
    示例:
hadoop fs -du /user/hadoop/dirl
  • -setrep
    功能:改变一个文件的副本系数。-R 选项用于递归改变目录下所有文件的副本系数
    示例:
hadoop fs -setrep -w 3 -R /user/hadoop/dirl

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值