IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 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的内容

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-22 12:24:30  更:2021-11-22 12:26:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:46:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码