Hadoop学习笔记 - 教程
-
(1)Hadoop概述Hadoop是一个开源的分布式计算和存储框架,用于处理大规模数据集(大数据)的并行处理。它由Apache基金会开发,核心设计灵感来自Google的MapReduce和Google文件系统(GFS)论文。Hadoop的核心优势在于其高容错性、横向扩展能力(可通过增加普通服务器扩展集群)以及低成本
(2)Hadoop核心部件
①HDFS架构
②YARN架构概述:Yet Another Resource Negotiator简称YARN ,另一种资源协调者,是Hadoop的资源管理器
③ MapReduce架构概述
④三者关系如下
(3)一些其他的和Hadoop配合的东西
(4)Hadoop运行环境搭建(开发重点)①模板虚拟机环境准备(1)安装模板虚拟机,IP地址192.168.10.100、主机名称hadoop100、内存4G、硬盘50G (2)使用ping命令确定虚拟机可不可以上网,如果可以的话用yum安装epel-release(提供官方仓库之外的额外软件包)
yum install -y epel-release
(3)关闭防火墙,关闭防火墙开机自启
systemctl stop firewalld
systemctl disable firewalld.service
(4)创建atguigu用户,并修改atguigu用户的密码 (5)配置atguigu用户具有root权限,方便后期加sudo执行root权限的命令 (6)在/opt目录下创建文件夹,并修改所属主和所属组 (7)卸载虚拟机自带的JDK (8)重启虚拟器
reboot
②克隆虚拟机准备好集群(1)利用模板机hadoop100,克隆三台虚拟机:hadoop102 hadoop103 hadoop104 (2)修改克隆机IP,以下以hadoop102(其他也相似)举例说明 ①修改克隆虚拟机的静态IP,命令如下:vim /etc/sysconfig/network-scripts/ifcfg-ens33 改动的点:
BOOTPROTO="static"
IPADDR=192.168.10.102
GATEWAY=192.168.10.2
DNS1=192.168.10.2
②查看Linux虚拟机的虚拟网络编辑器,编辑->虚拟网络编辑器->VMnet8(VMnet8 是 VMware 虚拟机软件中默认创建的 NAT(网络地址转换)模式虚拟网络,主要用于让虚拟机通过主机的网络连接访问外部互联网,同时保护虚拟机不直接暴露在外部网络中。) ③查看Windows系统适配器VMware Network Adapter VMnet8的IP地址 ④保证Linux系统ifcfg-ens33文件中IP地址、虚拟网络编辑器地址和Windows系统VM8网络IP地址相同。 ⑤修改克隆机主机名并配置Linux克隆机主机名称映射hosts文件(hosts 文件 是一个本地计算机上的纯文本文件,用于手动映射 主机名(域名) 到 IP 地址。它比 DNS(域名系统)查询更优先)
(3)在hadoop102安装JDK①卸载现有JDK ②JDK导入到opt目录下面的software文件夹下面 ③解压JDK到/opt/module目录下:tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/ ④配置JDK环境变量 ⑤输入java version看看有没有安装成功重启虚拟机sudo reboot
(4)在hadoop102安装Hadoop①将hadoop-3.1.3.tar.gz导入到opt目录下面的software文件夹下面 ②解压安装文件到/opt/module下面:tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/ ③将Hadoop添加到环境变量 ④输入hadoop version看看有没有安装成功重启虚拟机sudo reboot 我们看一下Hadoop的目录: 以下是目录:
(5)Hadoop运行环境的本地模式运行:单机运行,只是用来演示一下官方案例。①准备好两个txt文件放在wcinput文件夹里面(一个是奥巴马的演讲,一个是本人写的一个动漫的同人文(败犬女主太多了))
②转到/opt/module/hadoop-3.1.3目录下面运行如下命令:
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wcinput/ ./result
(1
) bin/hadoop jar
bin/hadoop:Hadoop 的可执行脚本,用于执行 Hadoop 相关的命令。
jar:表示要运行一个 Java JAR 包中的 MapReduce 程序。
(2
)share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar
路径:指向 Hadoop 自带的示例程序 JAR 包(hadoop-mapreduce-examples-3.1.3.jar)。
作用:这个 JAR 文件包含多个 MapReduce 示例程序,如 wordcount、grep、pi 等。
(3
)wordcount
程序名:指定运行 JAR 包中的 wordcount(词频统计)程序,功能是统计输入文件中每个单词的出现次数。
(4
) wcinput/
输入路径:HDFS(Hadoop 分布式文件系统)上的输入目录,包含要处理的文本文件。如果路径是 wcinput/(带 /),表示这是一个目录,Hadoop 会读取该目录下的所有文件。如果路径是 wcinput(不带 /),可能指向单个文件(但 wordcount 通常处理整个目录)。
(5
) ./result
输出路径:HDFS 上的输出目录,用于存储 wordcount 的计算结果。./result 表示 HDFS 当前用户目录下的 result 目录
该目录必须不存在,否则 Hadoop 会报错(防止覆盖已有数据)。
PS:以下是hadoop-mapreduce-examples-3.1.3.jar里面的示例Hadoop程序 查看运行结果: PS:如果自己实现一个Hadoop的程序并运行的话为以下步骤: (1)写代码并存放在文件夹里面
package com.atguigu
;
import java.io.IOException
;
import java.util.StringTokenizer
;
import org.apache.hadoop.conf.Configuration
;
import org.apache.hadoop.fs.Path
;
import org.apache.hadoop.io.Text
;
import org.apache.hadoop.mapreduce.Job
;
import org.apache.hadoop.mapreduce.Mapper
;
import