栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Hadoop

Hadoop

1. Hadoop 框架内容

  Hadoop 是 Apache 开发的开源框架,它的核心组件有:

  • HDFS(分布式文件系统):解决海量数据存储
  • MAPREDUCE(分布式运算编程框架):解决海量数据计算
  • YARN(作业调度和集群资源管理的框架):解决资源任务调度

  本次用的 Hadoop 的版本是 2.7.0

2. Hadoop 架构

3. Hadoop 模块之间的关系
  • MapReduce 计算需要的数据和产生的结果需要 HDFS 来进行存储
  • MapReduce 的运行需要有 Yarn 集群来提供资源调度
4. docker 安装单机版 Hadoop

  拉取 Hadoop 镜像

docker pull sequenceiq/hadoop-docker:2.7.0

  创建 Hadoop 容器

docker run -di --name=hadoop -p 50070:50070 -p 9000:9000 -p 8088:8088 -p 8040:8040 -p 8042:8042 -p 49707:49707 -p 50010:50010 -p 50075:50075 -p 50090:50090 sequenceiq/hadoop-docker:2.7.0

  进入到 Hadoop 容器中

docker exec -it hadoop /bin/bash

  进入 Hadoop 容器后,如果可以执行下面 mapreduce 的程序,证明安装成功

cd /usr/local/hadoop-2.7.0
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.0.jar grep input output 'dfs[a-z.]+'

  此时打开阿里云50070端口,然后在浏览器中访问 阿里云ip:50070,出现下面页面,docker安装成功

  在 Hadoop 容器中配置环境变量,使 Hadoop 命令行生效

vi /etc/profile
在最底部加入下面内容

export HADOOP_HOME="/usr/local/hadoop-2.7.0"
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

:wq(保存并退出)

  刷新目录,使命令行生效

source /etc/profile

  查看 Hadoop 版本,测试命令行是否生效

hadoop version
5. 测试安装的 hadoop 是否可用 (1) 测试 hdfs

  使用 docker 命令将 Linux 中的文件复制到 hadoop 容器中

docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径
docker cp /root/read_content.lua hadoop:/usr/local/hadoop-2.7.0

  进入到 hadoop 容器看是否在 hadoop 容器的指定目录下

docker exec -it hadoop /bin/bash
cd /usr/local/hadoop-2.7.0
ls

  将容器中的文件上传到 hdfs 的 / 目录下

hadoop fs -put /usr/local/hadoop-2.7.0/read_content.lua /

  在浏览器中查看是否上传成功

(2) 测试 mapreduce

  将 jar 包上传到 hadoop 容器中

docker cp /root/hadoop-mapreduce-examples-2.7.1.jar hadoop:/usr/local/hadoop-2.7.0

  进入 hadoop 容器中执行 jar 包,测试 mapreduce 是否可用
  这个 jar 包是计算圆周率

hadoop jar /usr/local/hadoop-2.7.0/hadoop-mapreduce-examples-2.7.1.jar pi 2 10

  后面10的数字越大,计算的圆周率越准确

6. HDFS 概述

  HDFS 分布式文件存储系统解决大数据的存储问题,它们是横跨在多台计算机上的存储系统。HDFS 有以下特点:

  1. 只适合于存储大文件,时效性较差
  2. 集群中有机器发生故障,可以自动快速恢复功能
  3. HDFS 为数据存储提供很强的扩展能力
  4. HDFS 只支持追加写入,不支持在文件中间的修改
7. HDFS 的架构

  HDFS 由四个基本组件组成:HDFS Client、NameNode、DataNode 和 Secondary NameNode

  1. HDFS Client
  • 文件进行上传时,先由 Client 进行文件分片,分片之后分别存储到 DataNode 中,并且可以有多个副本
  • 与 NameNode 交互,获取文件的位置信息
  • 与 DataNode 交互,读取或写入数据
  • 提供一些命令来访问 HDFS
  1. NameNode
  • 就是 master,是 HDFS 集群的管理者
  • 管理 HDFS 元数据(文件路径、文件大小、文件名字、文件权限、文件的分片信息…)
  • 配置副本策略
  • 处理客户端读写请求
  1. DataNode
  • NameNode 下达命令,DataNode 执行实际的操作
  • 存储实际的分片数据
  • 执行数据的读写操作
  • 定时向 NameNode 汇报分片信息
  1. Secondary NameNode
  • 辅助 NameNode 进行元数据的管理


  每个分片最大是128M,上图中有3个副本,分别存储在不同的主机上。

8. HDFS 的 Shell 命令

  hadoop 环境安装好后,我们可以使用 Shell 命令对 hdfs 文件系统进行操作。如:文件的创建、删除、修改文件权限等。

(1) 查看文件列表

hadoop fs -ls /   查看hdfs根目录下的文件列表

(2) 创建目录

hadoop fs -mkdir /dir1   在hdfs根目录下创建dir1文件夹
hadoop fs -mkdir -p /aaa/bbb/ccc   在hdfs根目录下递归创建多级文件夹

(3) 将 Linux 中的文件或文件夹上传到 hdfs 中

hadoop fs -put /usr/local/hadoop-2.7.0/read_content.lua /dir1   将read_content.lua上传到hdfs的dir1目录下
hadoop fs -put /home /   将home文件夹上传到hdfs的根目录

(4) 将 hdfs 上的文件拷贝到本地

  格式:hadoop fs -get hdfs系统路径 Linux本地路径

hadoop fs -get /read_content.lua /opt   将fdfs系统根目录下的read_content.lua文件拷贝到本地Linux的opt文件中

(5) 将 hdfs 上的文件进行移动

  格式:hadoop fs -mv 源路径 目标路径

hadoop fs -mv /dir1/read_content.lua /home   将hdfs系统的dir1目录中的read_content.lua文件移动到home目录下

(6) 删除 hdfs 上的文件或目录

hadoop fs -rm /read_content.lua   删除根目录下的read_content.lua文件

hadoop fs -rm -r /dir1   删除根目录下的dir1目录

(7) 复制 hdfs 上的文件或目录

  格式:hadoop fs -cp 源路径 目标路径

hadoop fs -cp /home/read_content.lua /   将hdfs系统的home目录下的read_content.lua文件拷贝到根目录下
hadoop fs -cp /aaa /home   将hdfs系统的aaa目录拷贝到home目录下

(8) 显示 hdfs 上的文件内容

hadoop fs -cat /read_content.lua   查看根目录下read_content.lua的内容

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/581781.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号