当前位置: 首页 > news >正文

Hadoop入个门

文章目录

  • 1️⃣、Hadoop概述
      • 1.1、Hadoop是什么
      • 1.2、三大发行版本
      • 1.3、优势
      • 1.4、组成
        • HDFS
        • YARN
        • MapReduce
        • HDFS、YARN、MapReduce三者关系
      • 1.6、大数据技术生态体系
      • image-20230311102719580
  • 2️⃣、Hadoop运行环境搭建
      • 2.1、虚拟机环境准备
      • 2.2、克隆虚拟机
      • 2.3、在hadoop2上安装JDK
      • 2.4、在hadoop上安装Hadoop
      • 2.5、hadoop目录结构
  • 3️⃣、Hadoop运行模式
      • 3.1 、本地运行模式(官方WordCount)
      • 3.2、==完全分布式运行模式==
        • 1、集群分发
        • 2、SSH无密登陆配置
        • 3、集群配置
        • 4、群起集群
        • 5、配置历史服务器
        • 5、配置日志的聚集
        • 6、集群启动/停止方式总结
        • 7、编写Hadoop集群常用脚本
        • 7、常用端口号说明
        • 8、集群同步时间
  • 4️⃣、问题解决
      • 1、日志权限
      • 2、权限
      • 面试题

1️⃣、Hadoop概述

1.1、Hadoop是什么

  • Hadoop是一个由Apache基金会所开发的分布式系统基础架构
  • 主要解决 海量数据的存储和海量数据的分析计算问题
  • 广义上来说,Hadoop通常是指一个更广泛的概念------Hadoop生态圈

发展史

image-20210401013100075

1.2、三大发行版本

Hadoop三大发行版本:Apache、Cloudera、Hortonworks。

Apache版本最原始(最基础)的版本,对于入门学习最好。2006

Cloudera内部集成了很多大数据框架,对应产品CDH。2008

Hortonworks文档较好,对应产品HDP。2011

Hortonworks现在已经被Cloudera公司收购,推出新的品牌CDP。

1.3、优势

image-20230311101107141

image-20230311101125279

1.4、组成

hadoop2.0以后的四个模块:- Hadoop Common:Hadoop模块的通用组件- Hadoop Distributed File System:分布式文件系统- Hadoop YARN:作业调度和资源管理框架- Hadoop MapReduce:基于YARN的大型数据集并行计算处理框架

image-20230311101253571

HDFS

Hadoop Distributed File System ,简称HDFS,是一个分布式文件系统。

  1. NameNode (nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等。

  2. DataNode (dn):在本地文件系统存储文件块数据,以及块数据的检验和

  3. SecondaryNameNode (2nn):每隔一段时间对NameNode元数据备份

YARN

Yet Another Resource Negotiator简称YARN ,另一种资源协调者,是Hadoop的资源管理器。

image-20230311101930747

MapReduce

MapReduce将计算过程分为两个阶段:Map和Reduce

  • Map阶段并行处理输入数据
  • Reduce阶段对Map结果进行汇总

HDFS、YARN、MapReduce三者关系

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2xtvThiK-1678511197803)(https://gitee.com/zh_sng/cartographic-bed/raw/master/img/动画.gif)]

1.6、大数据技术生态体系

image-20230311102719580

名词解释:

1)Sqoop:Sqoop是一款开源的工具,主要用于在Hadoop、Hive与传统的数据库(MySQL)间进行数据的传递,可以将一个关系型数据库(例如 :MySQL,Oracle 等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。2)Flume:Flume是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据; 3)Kafka:Kafka是一种高吞吐量的分布式发布订阅消息系统; 4)Spark:Spark是当前最流行的开源大数据内存计算框架。可以基于Hadoop上存储的大数据进行计算。5)Flink:Flink是当前最流行的开源大数据内存计算框架。用于实时计算的场景较多。6)Oozie:Oozie是一个管理Hadoop作业(job)的工作流程调度管理系统。7)Hbase:HBase是一个分布式的、面向列的开源数据库。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。8)Hive:Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。9)ZooKeeper:它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。

2️⃣、Hadoop运行环境搭建

安装Centos7最小系统版即可,当然安装桌面版也不是不行

2.1、虚拟机环境准备

配制要求:

  1. 测试能否正常上网

image-20230311103346173

  1. 安装epel-release
Extra Packages for Enterprise Linux是为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS和Scientific Linux。相当于是一个软件仓库,大多数rpm包在官方 repository 中是找不到的)
[root@hadoop ~]# yum install -y epel-release
  1. 注意:如果Linux安装的是最小系统版,还需要安装如下工具;如果安装的是Linux桌面标准版,不需要执行如下操作
[root@hadoop ~]# yum install -y net-tools 
[root@hadoop ~]# yum install -y vim
  1. 关闭防火墙,关闭防火墙开机自启动
[root@hadoop ~]# systemctl stop fiewwalld
[root@hadoop ~]# systemctl disable firewalld.service
  1. 创建用户,修改密码
[root@hadoop ~]# useradd zsong
[root@hadoop ~]# passwd zsong
  1. 配制用户并且具有root权限,方便后期加sudo执行root权限命令
[root@hadoop ~]# vim /etc/sudoers#修改/etc/sudoers文件,在%wheel这行下面添加一行,## Allow root to run any commands anywhere 
root    ALL=(ALL)       ALL## Allows members of the 'sys' group to run networking, software, 
## service management apps and more.## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALLzsong   ALL=(ALL)       NOPASSWD:ALL             《-----------添加这一行
## Same thing without a password
# %wheel        ALL=(ALL)       NOPASSWD: ALL

注意:zsong这一行不要直接放到root行下面,因为所有用户都属于wheel组,你先配置了zsong具有免密功能,但是程序执行到%wheel行时,该功能又被覆盖回需要密码。所以zsong要放到%wheel这行下面。

  1. /opt目录下创建文件夹,并修改所属主和所属组
[root@hadoop ~]# mkdir /opt/module
[root@hadoop ~]# mkdir /opt/software
  1. 修改module、software文件夹的所有者和所属组均为zsong用户
[root@hadoop ~]# chown zsong:zsong /opt/module 
[root@hadoop ~]# chown zsong:zsong /opt/software
  1. 查看module、software文件夹的所有者和所属组
[root@hadoop opt]# ll
总用量 0
drwxrwxr-x. 4 zsong zsong 31 310 21:27 module
drwxrwxr-x. 2 zsong zsong 67 310 21:14 softwares
  1. 卸载虚拟机自带的JDK

如果你的虚拟机是最小化安装不需要执行这一步。

[root@hadoop ~]# rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps 
  • rpm -qa:查询所安装的所有rpm软件包

  • grep -i:忽略大小写

  • xargs -n1:表示每次只传递一个参数

  • rpm -e –nodeps:强制卸载软件

  1. 重启虚拟机
[root@hadoop ~]# reboot

2.2、克隆虚拟机

  1. 利用模板机hadoop,克隆三台虚拟机:hadoop2、 hadoop3 、hadoop4

克隆时要先关闭hadoop虚拟机

image-20230311105246475

image-20230311105318166

image-20230311105335484

image-20230311105350121

image-20230311105420549

image-20230311105431149

等待克隆完毕即可!!!

  1. 修改克隆机IP,以下以hadoop2举例说明
[root@hadoop ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"            <--------改为 静态
DEFROUTE="yes"
........
........
ONBOOT="yes"
IPADDR="192.168.253.132"      <-------ip地址
PREFIX="24"                   
GATEWAY="192.168.253.2"       <-------网关
DNS1="114.114.114.114"        <------DNS
IPV6_PRIVACY="no"
  1. 修改克隆机主机名,以下以hadoop2举例说明
  • 修改主机名称
[root@hadoop ~]# vim /etc/hostname
hadoop2
  • 配置Linux克隆机主机名称映射hosts文件,打开/etc/hosts
[root@hadoop100 ~]# vim /etc/hosts

添加如下内容:

192.168.253.130 hadoop
192.168.253.131 hadoop1
192.168.253.132 hadoop2
192.168.253.133 hadoop3
192.168.253.134 hadoop4
  1. 重启克隆机hadoop2
[root@hadoop ~]# reboot
  1. 修改克隆机hadoop3、 hadoop4 步骤同上

2.3、在hadoop2上安装JDK

  1. 用FianlShell传输工具将JDK导入到opt目录下面的software文件夹下面

image-20230311110833330

  1. 在Linux系统下的opt目录中查看软件包是否导入成功
[zsong@hadoop2 softwares]$ ll
总用量 520600
-rw-r--r--. 1 root root 338075860 310 21:15 hadoop-3.1.3.tar.gz
-rw-r--r--. 1 root root 195013152 310 21:14 jdk-8u212-linux-x64.tar.gz
  1. 解压JDK到/opt/module目录下,并重命名
[zsong@hadoop2 softwares]$ tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
[zsong@hadoop2 softwares]$ cd /opt/module/
[zsong@hadoop2 module]$ mv jdk1.8.0_212 jdk 
  1. 配置JDK环境变量

可以直接vim /etc/profile在里面添加环境变量

也可以新建/etc/profile.d/my_env.sh文件

[zsong@hadoop2 ~]$ sudo vim /etc/profile.d/my_env.sh

添加如下内容

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk
export PATH=$PATH:$JAVA_HOME/bin

:wq保存退出

source一下/etc/profile文件,让新的环境变量PATH生效

[zsong@hadoop2 ~]$ source /etc/profile
  1. 测试JDK是否安装成功
[zsong@hadoop2 ~]$ java -version

如果能看到以下结果,则代表Java安装成功。

java version "1.8.0_212"

2.4、在hadoop上安装Hadoop

  1. 进入到Hadoop安装包路径下
[zsong@hadoop2 ~]$ cd /opt/software/
  1. 解压安装文件到/opt/module下面,并重命名
[zsong@hadoop2 software]$ tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
[zsong@hadoop2 software]$ cd /opt/module
[zsong@hadoop2 module]$ mv hadoop-3.1.3 hadoop
[zsong@hadoop2 module]$ ll
总用量 0
drwxr-xr-x. 13 zsong zsong 203 310 23:10 hadoop
drwxr-xr-x.  7 zsong zsong 245 42 2019 jdk
[zsong@hadoop2 module]$ 
  1. 添加到环境变量

打开/etc/profile.d/my_env.sh文件

[zsong@hadoop2 module]$ vim /etc/profile.d/my_env.sh 

在my_env.sh文件末尾添加如下内容:(shift+g)

#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

:wq 保存并退出

让修改后的文件生效

[zsong@hadoop2 module]$ source /etc/profile
  1. 测试是否安装成功
[zsong@hadoop2 module]$ hadoop version
Hadoop 3.1.3
Source code repository https://gitbox.apache.org/repos/asf/hadoop.git -r ba631c436b806728f8ec2f54ab1e289526c90579
Compiled by ztang on 2019-09-12T02:47Z
Compiled with protoc 2.5.0
From source with checksum ec785077c385118ac91aadde5ec9799
This command was run using /opt/module/hadoop/share/hadoop/common/hadoop-common-3.1.3.jar
[zsong@hadoop2 module]$ 

2.5、hadoop目录结构

[zsong@hadoop2 hadoop]$ lldrwxr-xr-x. 2 zsong zsong    183 912 2019 bin
drwxr-xr-x. 3 zsong zsong     20 912 2019 etc
drwxr-xr-x. 2 zsong zsong    106 912 2019 include
drwxr-xr-x. 3 zsong zsong     20 912 2019 lib
drwxr-xr-x. 4 zsong zsong   4096 912 2019 libexec
-rw-rw-r--. 1 zsong zsong 147145 94 2019 LICENSE.txt
-rw-rw-r--. 1 zsong zsong  21867 94 2019 NOTICE.txt
-rw-rw-r--. 1 zsong zsong   1366 94 2019 README.txt
drwxr-xr-x. 3 zsong zsong   4096 912 2019 sbin
drwxr-xr-x. 4 zsong zsong     31 912 2019 share

(1)bin目录:存放对Hadoop相关服务(hdfs,yarn,mapred)进行操作的脚本

(2)etc目录:Hadoop的配置文件目录,存放Hadoop的配置文件

(3)lib目录:存放Hadoop的本地库(对数据进行压缩解压缩功能)

(4)sbin目录:存放启动或停止Hadoop相关服务的脚本

(5)share目录:存放Hadoop的依赖jar包、文档、和官方案例

3️⃣、Hadoop运行模式

Hadoop运行模式包括:本地模式伪分布式模式以及完全分布式模式

  • 本地模式:单机运行,只是用来演示一下官方案例。生产环境不用。

  • **伪分布式模式:**也是单机运行,但是具备Hadoop集群的所有功能,一台服务器模拟一个分布式的环境。个别缺钱的公司用来测试,生产环境不用。

  • **完全分布式模式:**多台服务器组成分布式环境。生产环境使用。

3.1 、本地运行模式(官方WordCount)

  1. 创建在hadoop安装目录下面创建一个wcinput文件夹
[zsong@hadoop2 hadoop]$ mkdir wcinput
  1. 在wcinput文件下创建一个word.txt文件
[zsong@hadoop2 hadoop]$ cd wcinput
[zsong@hadoop2 hadoop]$ vim word.txt# 输入内容
ss  ss
zs zs
kang kang kang
hxy hxy

:wq 保存

  1. 回到Hadoop目录/opt/module/hadoop
  2. 执行程序
[zsong@hadoop2 hadoop]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wcinput wcoutput
  1. 查看结果
[zsong@hadoop2 hadoop]$ cat wcoutput/part-r-00000

3.2、完全分布式运行模式

1)准备3台客户机(关闭防火墙、静态IP、主机名称)
2)安装JDK
3)配置环境变量
4)安装Hadoop
5)配置环境变量
6)配置集群
7)单点启动
8)配置ssh
9)群起并测试集群

1、集群分发

1)scp(secure copy)安全拷贝

(1)scp定义
scp可以实现服务器与服务器之间的数据拷贝。(from server1 to server2)
(2)基本语法
scp    -r        $pdir/$fname             $user@$host:$pdir/$fname
命令   递归     要拷贝的文件路径/名称   目的地用户@主机:目的地路径/名称
(3)案例实操前提:在hadoop2、hadoop3、hadoop4都已经创建好的/opt/module、/opt/software两个目录,并且已经把这两个目录修改为zsong:zsong[zsong@hadoop2 ~]$ sudo chown zsong:zsong -R /opt/module

(a)在hadoop2上,将hadoop2中/opt/module/jdk目录拷贝到hadoop3上。

[zsong@hadoop2 ~]$ scp -r /opt/module/jdk  zsong@hadoop3:/opt/module

(b)在hadoop3上,将hadoop2中/opt/module/hadoop目录拷贝到hadoop3上。

[zsong@hadoop3 ~]$ scp -r zsong@hadoop2:/opt/module/hadoop  /opt/module/

(c)在hadoop3上操作,将hadoop2中/opt/module目录下所有目录拷贝到hadoop4上。

[zsong@hadoop3 opt]$ scp -r zsong@hadoop2:/opt/module/* zsong@hadoop4:/opt/module

2)rsync远程同步工具

rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。scp是把所有文件都复制过去。
(1)基本语法
rsync    -av       $pdir/$fname             $user@$host:$pdir/$fname
命令   选项参数   要拷贝的文件路径/名称   目的地用户@主机:目的地路径/名称

选项参数说明

选项功能
-a归档拷贝
-v显示复制过程

2、SSH无密登陆配置

1)配置ssh

(1)基本语法
ssh另一台电脑的IP地址
(2)ssh连接时出现Host key verification failed的解决方法
[zsong@hadoop2 ~]$ ssh hadoop3
*	如果出现如下内容
Are you sure you want to continue connecting (yes/no)? 
*	输入yes,并回车
(3)退回到hadoop102
[zsong@hadoop3 ~]$ exit

2)无密钥配置

image-20230311114603832

生成公钥和私钥

[zsong@hadoop2 .ssh]$ pwd
/home/zsong/.ssh
[zsong@hadoop2 .ssh]$ ssh-keygen -t rsa

然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

将公钥拷贝到要免密登录的目标机器上

[zsong@hadoop2 .ssh]$ ssh-copy-id hadoop2
[zsong@hadoop2 .ssh]$ ssh-copy-id hadoop3
[zsong@hadoop2 .ssh]$ ssh-copy-id hadoop4
还需要在hadoop3上采用zsong账号配置一下无密登录到hadoop2、hadoop3、hadoop4服务器上。
还需要在hadoop4上采用zsong账号配置一下无密登录到hadoop2、hadoop3、hadoop4服务器上。
还需要在hadoop2上采用root账号,配置一下无密登录到hadoop2、hadoop3、hadoop4;
[zsong@hadoop2 .ssh]$ ll
总用量 16
-rw-------. 1 zsong zsong 1185 310 23:02 authorized_keys
-rw-------. 1 zsong zsong 1679 310 22:15 id_rsa
-rw-r--r--. 1 zsong zsong  395 310 22:15 id_rsa.pub
-rw-r--r--. 1 zsong zsong  555 310 22:00 known_hosts
known_hosts记录ssh访问过计算机的公钥(public key)
id_rsa生成的私钥
id_rsa.pub生成的公钥
authorized_keys存放授权过的无密登录服务器公钥

3、集群配置

1)集群部署规划

  • NameNode和SecondaryNameNode不要安装在同一台服务器

  • ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上。

hadoop2hadoop3hadoop4
HDFSNameNode DataNodeDataNodeSecondaryNameNode DataNode
YARNNodeManagerResourceManager NodeManagerNodeManager

2)配置文件说明

Hadoop配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性值。

(1)默认配置文件:

要获取的默认文件文件存放在Hadoop的jar包中的位置
[core-default.xml]hadoop-common-3.1.3.jar/core-default.xml
[hdfs-default.xml]hadoop-hdfs-3.1.3.jar/hdfs-default.xml
[yarn-default.xml]hadoop-yarn-common-3.1.3.jar/yarn-default.xml
[mapred-default.xml]hadoop-mapreduce-client-core-3.1.3.jar/mapred-default.xml

(2)自定义配置文件:

core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml四个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径上,用户可以根据项目需求重新进行修改配置。

3)配置集群

(1)核心配置文件

配置core-site.xml

[zsong@hadoop2 ~]$ cd $HADOOP_HOME/etc/hadoop
[zsong@hadoop2 hadoop]$ vim core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><!-- 指定NameNode的地址 --><property><name>fs.defaultFS</name><value>hdfs://hadoop2:8020</value></property><!-- 指定hadoop数据的存储目录 --><property><name>hadoop.tmp.dir</name><value>/opt/module/hadoop/data</value></property><!-- 配置HDFS网页登录使用的静态用户为zsong --><property><name>hadoop.http.staticuser.user</name><value>zsong</value></property>
</configuration>

(2)HDFS配置文件

配置hdfs-site.xml

[zsong@hadoop2 hadoop]$ vim hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><!-- nn web端访问地址--><property><name>dfs.namenode.http-address</name><value>hadoop2:9870</value></property><!-- 2nn web端访问地址--><property><name>dfs.namenode.secondary.http-address</name><value>hadoop4:9868</value></property>
</configuration>

(3)YARN配置文件

配置yarn-site.xml

[zsong@hadoop2 hadoop]$ vim yarn-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><!-- 指定MR走shuffle --><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><!-- 指定ResourceManager的地址--><property><name>yarn.resourcemanager.hostname</name><value>hadoop3</value></property><!-- 环境变量的继承 --><property><name>yarn.nodemanager.env-whitelist</name><value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value></property>
</configuration>

(4)MapReduce配置文件

配置mapred-site.xml

[zsong@hadoop2 hadoop]$ vim mapred-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><!-- 指定MapReduce程序运行在Yarn上 --><property><name>mapreduce.framework.name</name><value>yarn</value></property>
</configuration>

4)在集群上分发配置好的Hadoop配置文件

[zsong@hadoop2 hadoop]$ pwd
/opt/module/hadoop/etc/hadoop
[zsong@hadoop2 hadoop]$ rsync -av ./* hadoop3:$PWD
[zsong@hadoop2 hadoop]$ rsync -av ./* hadoop4:$PWD

5)去hadoop3和hadoop4上查看文件分发情况

[zsong@hadoop3 ~]$ cat /opt/module/hadoop/etc/hadoop/core-site.xml
[zsong@hadoop4 ~]$ cat /opt/module/hadoop/etc/hadoop/core-site.xml

4、群起集群

1)配置workers

[zsong@hadoop2 hadoop]$ pwd
/opt/module/hadoop/etc/hadoop
[zsong@hadoop2 hadoop]$ vim workers

添加如下内容

hadoop2
hadoop3
hadoop4

注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

同步所有节点配置文件

[zsong@hadoop2 hadoop]$ pwd
/opt/module/hadoop/etc/hadoop
[zsong@hadoop2 hadoop]$ rxync -av workers hadoop3:$PWD
[zsong@hadoop2 hadoop]$ rxync -av workers hadoop4:$PWD

2)启动集群

如果集群是第一次启动,需要在hadoop2节点格式化NameNode
(注意:格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化NameNode的话,一定要先停止namenode和datanode进程,并且要删除所有机器的data和logs目录,然后再进行格式化。)
[zsong@hadoop2 hadoop]$ pwd
/opt/module/hadoop
[zsong@hadoop2 hadoop]$ hdfs namenode -format

(1)启动HDFS

[zsong@hadoop2 hadoop]$ sbin/start-dfs.sh

(3)在配置了ResourceManager的节点(hadoop3)启动YARN

[zsong@hadoop3 hadoop]$ sbin/start-yarn.sh

(4)Web端查看HDFS的NameNode

(a)浏览器中输入:http://192.168.253.132:9870(b)查看HDFS上存储的数据信息

(5)Web端查看YARN的ResourceManager

(a)浏览器中输入:http://192.168.253.133:8088(b)查看YARN上运行的Job信息

如果8088端口连接不上则修改vim /etc/hosts 注释掉前两行

#127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
#::1         localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.253.130 hadoop
192.168.253.131 hadoop1
192.168.253.132 hadoop2
192.168.253.133 hadoop3
192.168.253.134 hadoop4

3)集群基本测试

(1)上传文件到集群

[zsong@hadoop2 ~]$ hadoop fs -mkdir /input
[zsong@hadoop2 ~]$ hadoop fs -put $HADOOP_HOME/wcinput/word.txt /input

(2)上传文件后查看文件存放在什么位置

# 查看HDFS文件存储路径
[zsong@hadoop2 subdir0]$ pwd
/opt/module/hadoop/data/dfs/data/current/BP-392378016-192.168.253.132-1678461025024/current/finalized/subdir0/subdir0
#查看HDFS在磁盘存储文件内容
[zsong@hadoop2 subdir0]$ cat blk_1073741825
ss  ss
zs zs
kang kang kang
hxy hxy

(4)下载

[zsong@hadoop4 software]$ hdfs dfs -get /input ./

(5)执行wordcount程序

[zsong@hadoop2 hadoop]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output

5、配置历史服务器

为了查看程序的历史运行情况,需要配置一下历史服务器。具体配置步骤如下:

1)配置mapred-site.xml

[zsong@hadoop2 hadoop]$ vim mapred-site.xml

在该文件里面增加如下配置。

<!-- 历史服务器端地址 -->
<property><name>mapreduce.jobhistory.address</name><value>hadoop2:10020</value>
</property><!-- 历史服务器web端地址 -->
<property><name>mapreduce.jobhistory.webapp.address</name><value>hadoop2:19888</value>
</property>

2)分发配置

[zsong@hadoop2 hadoop]$ rsync -av mapred-site.xml  hadoop3:$PWD
[zsong@hadoop2 hadoop]$ rsync -av mapred-site.xml  hadoop4:$PWD

3)在hadoop2启动历史服务器

[zsong@hadoop2 hadoop]$ mapred --daemon start historyserver

4)查看历史服务器是否启动

[zsong@hadoop2 hadoop]$ jps

5)查看JobHistory

http://192.168.253.132:19888/jobhistory

5、配置日志的聚集

日志聚集概念:应用运行完成以后,将程序运行日志信息上传到HDFS系统上。

image-20230311122308534

日志聚集功能好处:可以方便的查看到程序运行详情,方便开发调试。

注意:开启日志聚集功能,需要重新启动NodeManager 、ResourceManager和HistoryServer。

开启日志聚集功能具体步骤如下:

1)配置yarn-site.xml

[zsong@hadoop2 hadoop]$ vim yarn-site.xml

在该文件里面增加如下配置。

<!-- 开启日志聚集功能 -->
<property><name>yarn.log-aggregation-enable</name><value>true</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<property>  <name>yarn.log.server.url</name>  <value>http://hadoop2:19888/jobhistory/logs</value>
</property>
<!-- 设置日志保留时间为7天 -->
<property><name>yarn.log-aggregation.retain-seconds</name><value>604800</value>
</property>

2)分发配置

[zsong@hadoop2 hadoop]$ rsync -av yarn-site.xml  hadoop3:$PWD
[zsong@hadoop2 hadoop]$ rsync -av yarn-site.xml  hadoop4:$PWD

3)关闭NodeManager、ResourceManager和HistoryServer

[zsong@hadoop3 hadoop]$ sbin/stop-yarn.sh
[zsong@hadoop2 hadoop]$ mapred --daemon stop historyserver

4)启动NodeManager 、ResourceManage和HistoryServer

[zsong@hadoop3 ~]$ start-yarn.sh
[zsong@hadoop2 ~]$ mapred --daemon start historyserver

5)删除HDFS上已经存在的输出文件

[zsong@hadoop2 ~]$ hadoop fs -rm -r /output

6)执行WordCount程序

[zsong@hadoop2 hadoop]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output

7)查看日志

(1)历史服务器地址

http://192.168.253.132:19888/jobhistory

(2)历史任务列表

image-20230311122916836

(3)查看任务运行日志

image-20230311122859414

(4)运行日志详情

6、集群启动/停止方式总结

1)各个模块分开启动/停止(配置ssh是前提)常用

(1)整体启动/停止HDFS

start-dfs.sh/stop-dfs.sh

(2)整体启动/停止YARN

start-yarn.sh/stop-yarn.sh

2)各个服务组件逐一启动/停止

2)各个服务组件逐一启动/停止

​ (1)分别启动/停止HDFS组件

hdfs --daemon start/stop namenode/datanode/secondarynamenode

​ (2)启动/停止YARN

yarn --daemon start/stop resourcemanager/nodemanager

7、编写Hadoop集群常用脚本

1)Hadoop集群启停脚本(包含HDFS,Yarn,Historyserver):myhadoop.sh

[zsong@hadoop2 ~]$ cd /home/zsong/bin
[zsong@hadoop2 bin]$ vim myhadoop.sh

输入如下内容

#!/bin/bashif [ $# -lt 1 ]
thenecho "No Args Input..."exit ;
ficase $1 in
"start")echo " =================== 启动 hadoop集群 ==================="echo " --------------- 启动 hdfs ---------------"ssh hadoop2 "/opt/module/hadoop/sbin/start-dfs.sh"echo " --------------- 启动 yarn ---------------"ssh hadoop3 "/opt/module/hadoop/sbin/start-yarn.sh"echo " --------------- 启动 historyserver ---------------"ssh hadoop2 "/opt/module/hadoop/bin/mapred --daemon start historyserver"
;;
"stop")echo " =================== 关闭 hadoop集群 ==================="echo " --------------- 关闭 historyserver ---------------"ssh hadoop2 "/opt/module/hadoop/bin/mapred --daemon stop historyserver"echo " --------------- 关闭 yarn ---------------"ssh hadoop3 "/opt/module/hadoop/sbin/stop-yarn.sh"echo " --------------- 关闭 hdfs ---------------"ssh hadoop2 "/opt/module/hadoop/sbin/stop-dfs.sh"
;;
*)echo "Input Args Error..."
;;
esac
  • 保存后退出,然后赋予脚本执行权限
[zsong@hadoop2 bin]$ chmod 777 myhadoop.sh

2)查看三台服务器Java进程脚本:jpsall

[zsong@hadoop2 ~]$ cd /home/zsong/bin
[zsong@hadoop2 bin]$ vim jpsall

输入如下内容

#!/bin/bashfor host in hadoop2 hadoop3 hadoop4
doecho =============== $host ===============ssh $host jps 
done

保存后退出,然后赋予脚本执行权限

[zsong@hadoop2 bin]$ chmod 777 jpsall

3**)分发/home/atguigu/bin****目录,保证自定义脚本在三台机器上都可以使用**

[zsong@hadoop2 ~]$ scp ./* hadoop3:$PWD
[zsong@hadoop2 ~]$ scp ./* hadoop4:$PWD

7、常用端口号说明

端口名称Hadoop2.xHadoop3.x
NameNode内部通信端口8020 / 90008020 / 9000/9820
NameNode HTTP UI500709870
MapReduce查看执行任务端口80888088
历史服务器通信端口1988819888

8、集群同步时间

如果服务器在公网环境(能连接外网),可以不采用集群时间同步,因为服务器会定期和公网时间进行校准;

如果服务器在内网环境,必须要配置集群时间同步,否则时间久了,会产生时间偏差,导致集群执行任务时间不同步。

找一个机器,作为时间服务器,所有的机器与这台集群时间进行定时的同步,生产环境根据任务对时间的准确程度要求周期同步。测试环境为了尽快看到效果,采用1分钟同步一次。

yum install -y ntp

(1)查看所有节点ntpd服务状态和开机自启动状态

[zsong@hadoop2 ~]$ sudo systemctl status ntpd
[zsong@hadoop2 ~]$ sudo systemctl start ntpd
[zsong@hadoop2 ~]$ sudo systemctl is-enabled ntpd

(2)修改hadoop102的ntp.conf配置文件

[zsong@hadoop2 ~]$ sudo vim /etc/ntp.conf

image-20230311124605701

(3)修改hadoop102的/etc/sysconfig/ntpd 文件

[zsong@hadoop2 ~]$ sudo vim /etc/sysconfig/ntpd

增加内容如下(让硬件时间与系统时间一起同步)

SYNC_HWCLOCK=yes

(4)重新启动ntpd服务

[zsong@hadoop2 ~]$ sudo systemctl start ntpd

(5)设置ntpd服务开机启动

[zsong@hadoop2 ~]$ sudo systemctl enable ntpd

3)其他机器配置(必须root用户)

(1)关闭所有节点上ntp服务和自启动

[zsong@hadoop3 ~]$ sudo systemctl stop ntpd[zsong@hadoop3 ~]$ sudo systemctl disable ntpd[zsong@hadoop4 ~]$ sudo systemctl stop ntpd[zsong@hadoop4 ~]$ sudo systemctl disable ntpd

(2)在其他机器配置1分钟与时间服务器同步一次

[zsong@hadoop3 ~]$ sudo crontab -e

编写定时任务如下:

*/1 * * * * /usr/sbin/ntpdate hadoop102

(3)修改任意机器时间

[zsong@hadoop3 ~]$ sudo date -s "2021-9-11 11:11:11"

(4)1分钟后查看机器是否与时间服务器同步

[zsong@hadoop3 ~]$ sudo date

4️⃣、问题解决

1、日志权限

hadoop2: ERROR: Unable to write in /opt/module/hadoop/logs. Aborting.
Starting datanodes
hadoop2: ERROR: Unable to write in /opt/module/hadoop/logs. Aborting.
hadoop2: datanode is running as process 10105.  Stop it first.
hadoop3: datanode is running as process 19312.  Stop it first.
Starting secondary namenodes [hadoop113]
hadoop3: secondarynamenode is running as process 19380.  Stop it first.
sudo chown zsong:zsong ./logs  ./dada

2、权限

[zsong@hadoop2 opt]$ start-dfs.sh 
Starting namenodes on [hadoop2]
hadoop2: /opt/module/hadoop/libexec/hadoop-functions.sh:行1842: /tmp/hadoop-zsong-namenode.pid: 权限不够
hadoop2: ERROR:  Cannot write namenode pid /tmp/hadoop-zsong-namenode.pid.
Starting datanodes
Starting secondary namenodes [hadoop4]

image-20230310233111682

#直接修改权限
sudo chown zsong:zsong /tmp/hadoop-zsong-namenode.pid

面试题

一、
常用瑞口号
hadoop3.x
HDFS NameNode内部通常端▣:8020/9000/9820
HDFS NameNode对用户的查询端口:9870
Yarn查看任务运行情况的:8088
历史服务器:19888hadoop2.x
HDFS NameNode内部通常端▣:8020/9000
HDFS NameNode对用户的查询端口:50070
Yarn查看任务运行情况的:8088
历史服务器:19888二、
常用的配置文件
3.x 
core-site.xml
hdfs-site.xml
yarn-site.xml
mapred-site.xml workers2.x 
core-site.xml
hdfs-site.xml
yarn-site.xml
mapred-site.xml slaves

相关文章:

Hadoop入个门

文章目录1️⃣、Hadoop概述1.1、Hadoop是什么1.2、三大发行版本1.3、优势1.4、组成HDFSYARNMapReduceHDFS、YARN、MapReduce三者关系1.6、大数据技术生态体系image-202303111027195802️⃣、Hadoop运行环境搭建2.1、虚拟机环境准备2.2、克隆虚拟机2.3、在hadoop2上安装JDK2.4、…...

python 从0到批量下载某站视频

简介&#xff1a;真实从0到1&#xff0c;童叟无欺&#xff5e; 目标&#xff1a;用python批量下载某站搜索视频&#xff0c;以“CG 服装”为例 本章主要介绍如何用python把搜索到的视频直接下载到自己的本地文件夹中&#xff5e; 介绍一下工作流1. 下载并安装python2. 测试pyt…...

【深度学习】神经网络和深度学习--卷积和池化的作用

深度学习通常指训练大型深度的神经网络的过程。 与传统的神经网络模型相比&#xff0c;深度学习模型在结构上与之非常相似&#xff1b;不同的是&#xff0c;深度学习模型的“深度”更大&#xff0c;“深度”的体现就是神经网络层数多&#xff0c;神经网络每一层的结点数多。 本…...

锦正茂风冷系列电源JCP-10-80的技术参数

JCP-10-80为高稳定度的双极性恒流电源&#xff0c;广泛应用于电磁铁、亥姆霍兹线圈等感性负载的励磁。电源采用线性电源结构&#xff0c;输出电流稳定度高&#xff0c;纹波和噪声低。电源输出电流可在正负额定电流*值之间连续变化&#xff0c;电流平滑连续过零&#xff0c;可使…...

Idea+maven+spring-cloud项目搭建系列--11-1 dubbo(zookeeper,nacos)注册中心

前言&#xff1a;dubbo rpc 服务需要将服务提供者和消费者信息进行注册&#xff0c;以便于消费端可以完成远程接口调用&#xff1b;注册中心是 Dubbo 服务治理的核心组件&#xff0c;Dubbo 依赖注册中心的协调实现服务&#xff08;地址&#xff09;发现&#xff0c;自动化的服务…...

Python3入门教程||Python3 迭代器与生成器||Python3 函数

Python3 迭代器与生成器 迭代器 迭代是 Python 最强大的功能之一&#xff0c;是访问集合元素的一种方式。。 迭代器是一个可以记住遍历的位置的对象。 迭代器对象从集合的第一个元素开始访问&#xff0c;直到所有的元素被访问完结束。迭代器只能往前不会后退。 迭代器有两…...

快速幂算法

快速幂算法 文章目录快速幂算法一、简单介绍二、计算7107^{10}710三、一般化1、计算ana^nan的快速方法&#xff1a;2、时间复杂度分析&#xff1a;四、代码五、参考资料一、简单介绍 ​ 快速幂&#xff08;Exponentiation by squaring&#xff0c;平方求幂&#xff09;是一种简…...

Hudi:问题总结(2)Flink-1.13.1消费kafka并插入hudi

问题一&#xff1a;java.lang.ClassNotFoundException: com.google.protobuf.MessageOrBuilder) 解决&#xff1a;字面意思&#xff0c;没找到类&#xff0c;将protobuf-java-3.2.0-jar包放到fink/lib/下 如果报commons-cli相关的错&#xff0c;就将commons-cli-1.4.jar放到f…...

Application工具方法

//注册这个接口registerActivityLifecycleCallbacks(activityLifecycleCallbacks);}Overridepublic void onTerminate() {//注销这个接口。unregisterActivityLifecycleCallbacks(activityLifecycleCallbacks);super.onTerminate();}public static List<Activity> activi…...

电脑游戏怎么录屏?其实很简单,只需要简单3步

电脑游戏一直是游戏爱好者最热衷的游戏之一。但是&#xff0c;有时候我们想分享我们在游戏中的精彩时刻&#xff0c;或者记录我们的游戏过程以便后续观看和学习。在这种情况下&#xff0c;录屏就成了必不可少的工具。但是&#xff0c;许多人可能不知道电脑游戏怎么录屏。在本文…...

【设计模式】go语言中的 [函数选项,单例,工厂,责任链] 常用的设计模式

文章目录前言一、函数选项模式二、单例模式三、工厂模式四、责任链模式前言 宿舍每人 温度38℃&#xff0b; 大寄 设计模式很重要&#xff0c;设计模式其实就是为了解决某一类问题而形成的代码写法&#xff0c;设计模式很多&#xff0c;但是并不是每个都很常用&#xff0c;我们…...

2017系统分析师案例分析真题背记内容

前言 以下内容仅为个人根据当年系分案例真题问题整理的偏需要记背的考点答案&#xff0c;方便个人背诵和记忆使用。方便文字转语音&#xff0c;所以内容全为纯文字内容&#xff0c;以下内容仅供参考。 背记内容 微服务 微服务中应该包含的内容有&#xff1a;资源、对资源的…...

C++和C的区别

答&#xff1a;从宏观角度和微观角度分析微观角度&#xff1a;函数原型有区别&#xff0c;在c中&#xff0c;函数原型有参数和没有参数是不同的&#xff0c;并且允许申明多个同名的函数&#xff0c;只要他们的参数列表不同或者返回值不同即可&#xff0c;但是在c语言中不能。C引…...

【React教程】一、React简介

一、React简介 React是一个用于构建用户界面的JavaScript库&#xff0c;它是Facebook的内部项目&#xff0c;用来架设Instagram的网站,并于2013年5月开源。React主要用于构建Ul&#xff0c;很多人认为React 是 MVC 中的 V&#xff08;视图&#xff09;。由于拥有较高的性能&…...

运动蓝牙耳机什么牌子好,比较好的运动蓝牙耳机推荐

现在市面上的运动蓝牙耳机越来越多&#xff0c;在选择耳机的时候应该如何入手呢&#xff1f;最重要的是需要按照自己的需求来选择&#xff0c;但在耳机的配置上不能忽视的是耳机的防水等级&#xff0c;运动耳机对防水等级的要求更高&#xff0c;这样能够更好地防御汗水浸湿耳机…...

[深入理解SSD系列 闪存实战2.1] NAND FLASH特性串烧 | 不了解闪存特性,你能用好闪存产品吗?

前言 为了利用好闪存, 发挥闪存的优势, 以达到更好的性能和使用寿命, 那自然要求了解闪存特性。 闪存作为一种相对较新的存储介质, 有很多特别的特性。 一.闪存的特性 凡是采用Flash Memory的存储设备,可以统称为闪存存储。我们经常谈的固态硬盘(SSD),可以由volatile/…...

DJI ROS dji_sdk 源码分析|整体框架

DJI ROS dji_sdk 源码分析|整体框架launch文件CMakeLists.txtcpp文件main.cppOSDK 是一个用于开发无人机应用程序的开发工具包&#xff0c;基于OSDK 开发的应用程序能够运行在机载计算机上&#xff08;如Manifold 2&#xff09;&#xff0c;开发者通过调用OSDK 中指定的接口能够…...

HT32合泰单片机开发环境搭建和配置教程

HT32合泰(Holtek)单片机开发环境搭建安装教程 前言 最近在准备合泰杯的比赛&#xff0c;在看合泰官方的PPT和数据手册学习&#xff0c;顺便做个合泰单片机的开发环境搭建教程。 合泰杯比赛发放的开发板是ESK32-30501&#xff0c;用的单片机是HT32F52352。 合泰杯官网地址&a…...

动态内存分配之伙伴算法

伙伴算法 伙伴算法是一种在计算机内存管理中使用的算法&#xff0c;用于分配和释放内存。它是一种基于二叉树的动态内存分配算法&#xff0c;可以高效地分配和合并内存块。伙伴算法是一种按照固定大小分配内存的算法&#xff0c;例如&#xff0c;每个内存块的大小为2的n次幂&a…...

CGAL 根据扫描线方向和角度对法向量进行重定向

目录一、算法原理1、主要函数二、代码实现一、算法原理 最小生成树对法向量定向的结果在具有许多尖锐特征和遮挡的机载点云数据中结果并不理想。scanline_orient_normals()是专门用于具有扫描线特性的点云法向量重定向的替代方法。它充分利用了某些激光雷达扫描器的LAS特性&…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行&#xff0c;YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID&#xff1a; YW3…...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...