【博学谷学习记录】超强总结,用心分享|狂野大数据课程 【Hadoop】学习笔记

一、Hadoop框架

1.1介绍

1、Hadoop是Apache旗下的使用Java语言开发的框架

2、Hadoop内部包含三个组件:

HDFS(分布式文件系统):解决海量数据存储

MAPREDUCE(分布式运算编程框架):解决海量数据计算

YARN(作业调度和集群资源管理的框架):解决资源任务调度

1.2历史版本

开源版:

1.x版本系列:hadoop版本当中的第二代开源版本,主要修复0.x版本的一些bug等,该版本已被淘汰

2.x版本系列:架构产生重大变化,引入了yarn平台等许多新特性,是现在使用的主流版本。

3.x版本系列:对HDFS、MapReduce、YARN都有较大升级,还新增了Ozone key-value存储。

商业版:

商业公司对开源版Hadoop做二次调优和封装,Cloudera Hadoop: 简称为CDH

社区版:http://hadoop.apache.org/

收费版:https://www.cloudera.com/

1.3Hadoop模块

1、Hadoop1.x组件只有HDFS和MapReduce

2、Hadoop2.x组件有:HDFS、MapReduce、Yarn

3、Hadoop3.x组件有:HDFS、MapReduce、Yarn,但是对Hadoop2.x的内核做了一些优化和调整

1.4Hadoop集群搭建

1、需要搭建HDFS集群组件:NameNode、DataNode、SecondaryNameNode

2、需要搭建Yarn集群组件:ResourceManager、NodeManager

3、我们不需要搭建MapReduce组件,因为MapReduce只是一个代码库,最后呈现的只是一段代码,没有组件,也就是对于MapReduce,我们只需要写代码

1.5集群部署方式

1.standalone mode(独立模式)

独立模式又称为单机模式,仅1个机器运行1个java进程,主要用于调试。

2.Pseudo-Distributed mode(伪分布式模式)

伪分布模式也是在1个机器上运行HDFS的NameNode和DataNode、YARN的 ResourceManger和NodeManager,但分别启动单独的java进程,主要用于调试。

3.Cluster mode(群集模式)

集群模式主要用于生产环境部署。会使用N台主机组成一个Hadoop集群。这种部署模式下,主节点和从节点会分开部署在不同的机器上。

1.6Hadoop的目录结构

bin: Hadoop最基本的管理脚本和使用脚本的目录

sbin:Hadoop管理脚本所在的目录,主要包含HDFS和YARN中各类服务的启动/关闭脚本。

share:Hadoop各个模块编译后的jar包所在的目录,官方自带示例。

etc/hadoop: Hadoop配置文件所在的目录,安装Hadoop就是对etc/hadoop目录下的文件进行操作

二、搭建步骤

2.1搭建方案

节点信息

node1

node2

node3

HDFS集群

守护进程

NameNode

×

×

SecondaryNameNode

×

×

DataNode

YARN集群

守护进程

ResourceManager

×

×

NodeManager

2.2安装步骤

1、下载Hadoop的安装包或者源码包

http://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/

2、对Hadoop的源码包进行编译(可选)

3、在node1上,上传编译过的Hadoop安装包到/export/software目录

4、在node1上,将上传的压缩包解压到/export/server目录

cd /export/software

tar -zxvf hadoop-3.3.0-Centos7-64-with-snappy.tar.gz -C /export/server/

5、在node1上进入Hadoop的配置文件目录

cd /export/server/hadoop-3.3.0/etc/hadoop

6、在node1上对Hadoop的文件进行配合

配置参考文档:https://hadoop.apache.org/docs/stable/

  • 1、 hadoop-env.sh

exportJAVA_HOME=/export/server/jdk1.8.0_241

#文件最后添加

exportHDFS_NAMENODE_USER=root

exportHDFS_DATANODE_USER=root

exportHDFS_SECONDARYNAMENODE_USER=root

exportYARN_RESOURCEMANAGER_USER=root

exportYARN_NODEMANAGER_USER=root

  • 2、 core-site.xml

<!-- 指定HDFS的主节点NameNode在ndoe1上 -->

<property>

<name>fs.defaultFS</name>

<value>hdfs://node1:8020</value>

</property>

<!-- 指定HDFS数据的存放目录 -->

<property>

<name>hadoop.tmp.dir</name>

<value>/export/data/hadoop-3.3.0</value>

</property>

<!-- 设置HDFS web UI用户身份 -->

<property>

<name>hadoop.http.staticuser.user</name>

<value>root</value>

</property>

<!-- 整合hive -->

<property>

<name>hadoop.proxyuser.root.hosts</name>

<value>*</value>

</property>

<property>

<name>hadoop.proxyuser.root.groups</name>

<value>*</value>

</property>

  • 3、hdfs-site.xml

<!-- 指定secondarynamenode运行位置 -->

<property>

<name>dfs.namenode.secondary.http-address</name>

<value>node2:50090</value>

</property>

<property>

<name>dfs.hosts.exclude</name>

<value>/export/server/hadoop-3.3.0/etc/hadoop/excludes</value>

</property>

  • 4、mapred-site.xml

<!--MapReduce执行时由Yarn来进行资源调度-->

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

<!--给MapReduce指定Hadoop的安装位置-->

<property>

<name>yarn.app.mapreduce.am.env</name>

<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>

</property>

<property>

<name>mapreduce.map.env</name>

<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>

</property>

<property>

<name>mapreduce.reduce.env</name>

<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>

</property>

  • 5、 yarn-site.xml

<!-- 指定YARN的主角色(ResourceManager)的地址 -->

<property>

<name>yarn.resourcemanager.hostname</name>

<value>node1</value>

</property>

<!-- NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序默认值:"" -->

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

<!-- 是否将对容器实施物理内存限制 -->

<property>

<name>yarn.nodemanager.pmem-check-enabled</name>

<value>false</value>

</property>

<!-- 是否将对容器实施虚拟内存限制。 -->

<property>

<name>yarn.nodemanager.vmem-check-enabled</name>

<value>false</value>

</property>

<!-- 开启日志聚集 -->

<property>

<name>yarn.log-aggregation-enable</name>

<value>true</value>

</property>

<!-- 设置yarn历史服务器地址 -->

<property>

<name>yarn.log.server.url</name>

<value>http://node1:19888/jobhistory/logs</value>

</property>

<!-- 保存的时间7天,单位是秒 -->

<property>

<name>yarn.log-aggregation.retain-seconds</name>

<value>604800</value>

</property>

  • 6、workers

node1

node2

node3

  • 7、在node1上,将配置好的Hadoop安装包分发给node2和node3

cd /export/server

scp -r hadoop-3.3.0/ node2:$PWD

scp -r hadoop-3.3.0/ node3:$PWD

  • 8、在三台机器上,配置环境变量

vim /etc/profile #添加以下内容

exportHADOOP_HOME=/export/server/hadoop-3.3.0

exportPATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

  • 9、在三台机器上,刷新环境变量

source /etc/profile

2.3Hadoop集群的启动

注意,第一次启动Hadoop之前,必须在对HDFS进行格式化,而且这个操作只能执行一次,切记!!!

hdfs namenode -format

启动HDFS集群

-- 选择node1节点启动NameNode节点
hdfs --daemon start namenode

-- 在所有节点上启动DataNode
hdfs --daemon start datanode

-- 在node2启动Secondary NameNode
hdfs --daemon start secondarynamenode

启动YARN集群

--  选择node1节点启动ResourceManager节点
yarn --daemon start resourcemanager

--  在所有节点上启动NodeManager
yarn --daemon start nodemanager

-- 启动历史服务
mapred --daemon start historyserver

一键启动、关闭HDFS,YARN

-- 在node1,一键启动HDFS、YARN
start-all.sh
--在node1,一键关闭HDFS、YARN
stop-all.sh

-- 启动历史服务
mapred --daemon start historyserver

2.4配置windows域名映射

  1. 以管理员身份打开C:\Windows\System32\drivers\etc目录下的hosts文件

  1. 在文件最后添加以下映射域名和ip映射关系

192.168.88.161 node1
192.168.88.162 node2
192.168.88.163 node3
  1. 保存退出

  1. 测试映射是否生效

C:\Users\China>ping node1
正在 Ping node1 [192.168.88.100] 具有 32 字节的数据:
来自 192.168.88.100 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.88.100 的回复: 字节=32 时间<1ms TTL=64

C:\Users\China>ping node2
正在 Ping node2 [192.168.88.101] 具有 32 字节的数据:
来自 192.168.88.101 的回复: 字节=32 时间<1ms TTL=64
192.168.88.101 的 Ping 统计信息:
    数据包: 已发送 = 1,已接收 = 1,丢失 = 0 (0% 丢失),

C:\Users\China>ping node3
正在 Ping node3 [192.168.88.102] 具有 32 字节的数据:
来自 192.168.88.102 的回复: 字节=32 时间=9ms TTL=64
来自 192.168.88.102 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.88.102 的回复: 字节=32 时间<1ms TTL=64

三、使用HDFS

  1. 从Linux本地上传一个文本文件到hdfs的/目录下

#在/export/data/目录中创建a.txt文件,并写入数据

cd /export/data/

touch a.txt

echo "hello" > a.txt

#将a.txt上传到HDFS的根目录

hadoop fs -put a.txt /

2.运行mapreduce程序

在Hadoop安装包的share/hadoop/mapreduce下有官方自带的mapreduce程序。我们可以使用如下的命令进行运行测试。(示例程序jar:hadoop-mapreduce-examples-3.1.4.jar计算圆周率)

yarn jar /export/server/hadoop-3.3.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.0.jar pi 2 50

3.Hadoop安装包目录结构

bin

Hadoop最基本的管理脚本和使用脚本的目录,这些脚本是sbin目录下管理脚本的基础实现,用户可以直接使用这些脚本管理和使用Hadoop。

etc

Hadoop配置文件所在的目录,包括core-site,xml、hdfs-site.xml、mapred-site.xml等从Hadoop1.0继承而来的配置文件和yarn-site.xml等Hadoop2.0新增的配置文件。

include

对外提供的编程库头文件(具体动态库和静态库在lib目录中),这些头文件均是用C++定义的,通常用于C++程序访问HDFS或者编写MapReduce程序。

lib

该目录包含了Hadoop对外提供的编程动态库和静态库,与include目录中的头文件结合使用。

libexec

各个服务对用的shell配置文件所在的目录,可用于配置日志输出、启动参数(比如JVM参数)等基本信息。

sbin

Hadoop管理脚本所在的目录,主要包含HDFS和YARN中各类服务的启动/关闭脚本。

share

Hadoop各个模块编译后的jar包所在的目录,官方自带示例。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值