学习笔记hadoop——hadoop基础操作(代码片段)

别呀 别呀     2023-01-07     267

关键词:

一、Hadoop安全模式

在分布式文件HDFS系统启动的时候,会有安全模式,当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结束。

安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。

运行期通过命令也可以进入 安全模式。

实际操作中,可以通过命令进入安全模式,系统启动的时候去修改和删除文件也会有安全模式不允许修改的出错提示,只需要等待一会儿即可。

Master配置Hadoop环境变量

vi /etc/profile

添加:

export HADOOP_HOME=/opt/hadoop-3.1.4
export PATH=$PATH:$HADOOP_HOME/bin

是环境使生效

source /etc/profile

1.1、HDFS启动日志分析

工作流程:

  1. 启动NameNode,NameNode加载fsimage。

  2. 加载edits log。

  3. NameNode等待DataNode上传block列表信息,直到副本数量满足最小副本条件。(最小副本条件指整个文件系统中有99.9%的block达到了最小副本数)

  4. 当满足了最小副本条件,再等待一段时间,NameNode就会自动退出安全模式。

启动HDFS
我们来尝试添加一个文件:
进入hadoop安装位置/opt/hadoop-3.1.3

 hdfs dfs -mkdir -p /user/root
 hdfs dfs -put LICENSE.txt NOTICE.txt README.txt .

执行上面两条语句,文件就上传成功了

1.2、Safemode进入方式

只启动Namenode

只启动Namenode & 一个Datanode

通过命令查看namenode是否处于安全模式:

hdfs dfsadmin -safemode get

进入安全模式:

hdfs dfsadmin -safemode enter

注意

  1. 对文件系统元数据进行只读操作。
  2. 当文件的所有block信息具备的情况下,对文件进行只读操作。
  3. 不允许进行文件修改(写,删除或者重命名文件)。

二、Hadoop集群基本信息

在Hadoop中集群的基本信息主要包含分布式文件系统HDFS和分布式资源管理YARN。

分布式文件系统HDFS主要包含文件系统的状态,是否有块丢失、备份丢失等等。同时,包含集群节点状态等。

分布式资源管理YARN主要包含集群节点状态,节点资源(内存,CPU等),队列状态等。

查看HDFS集群基本信息的指令

hdfs fsck /


三、HDFS常用Shell操作

3.1、HDFS文件系统

HDFS Shell 指的是可以使用类似shell的命令来直接和Hadoop分布式文件系统(HDFS)进行交互。

使用命令:

bin/hadoop fs <args> 
bin/hdfs dfs <args>

参数中的路径使用scheme://authority/path 的格式,如默认配置的是hdfs,那么路径如: hdfs://namenodehost:port/parent/child 。

如果使用相对路径,那么当前的工作目录就是/user/username, 比如当前是root账号,那么工作目录就是/user/root。

示例:

3.2、常用Shell命令-appendToFile

用法

hadoop fs -appendToFile <localsrc> ... <dst>

示例:

hadoop fs -appendToFile localfile /user/hadoop/hadoopfile
hadoop fs -appendToFile localfile1 localfile2 /user/hadoop/hadoopfile
hadoop fs -appendToFile localfile hdfs://nn.example.com/hadoop/hadoopfile
hadoop fs -appendToFile - hdfs://nn.example.com/hadoop/hadoopfile

3.3、常用Shell命令-cat

用法

hadoop fs -cat [-ignoreCrc] URI [URI ...]

示例:

hadoop fs -cat hdfs://nn1.example.com/file1 hdfs://nn2.example.com/file2
hadoop fs -cat file:///file3 /user/hadoop/file4

3.4、常用Shell命令-copyFromLocal | put

用法

hadoop fs -put [-f] [-p] [-l] [-d] [-t <thread count>] [ - | <localsrc1> .. ]. <dst>

示例:

hadoop fs -put localfile /user/hadoop/hadoopfile
hadoop fs -put -f localfile1 localfile2 /user/hadoop/hadoopdir
hadoop fs -put -d localfile hdfs://nn.example.com/hadoop/hadoopfile
hadoop fs -put - hdfs://nn.example.com/hadoop/hadoopfile

3.5、常用Shell命令-cp

用法

hadoop fs -cp [-f] [-p | -p[topax]] URI [URI ...] <dest>

示例:

hadoop fs -cp /user/hadoop/file1 /user/hadoop/file2
hadoop fs -cp /user/hadoop/file1 /user/hadoop/file2 /user/hadoop/dir

可选项:
-f : 如果目标文件存在,则覆写目标文件;
-p : 保存文件的属性,[topx] (timestamps, ownership, permission, ACL, XAttr).

3.6、常用Shell命令-du

用法

hadoop fs -du [-s] [-h] [-v] [-x] URI [URI ...]

可选项:
-s : 统计文件夹;
-h : 格式化友好输出;
-v : 显示列名;
-x : 去除snapshots 进行计算;

3.7、常用Shell命令-copyToLocal | get

用法

hadoop fs -get [-ignorecrc] [-crc] [-p] [-f] <src> <localdst>

示例:

hadoop fs -get /user/hadoop/file localfile
hadoop fs -get hdfs://nn.example.com/user/hadoop/file localfile

3.8、常用Shell命令-ls

用法

hadoop fs -ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] <args>

可选项:
-C : 只显示文件及文件夹 ; -d : 只显示给定文件夹 ; -h : 格式化文件大小显示
-q : 使用?替代不可打印字符 ; -R : 递归显示 ;-t : 按照最近修改文件排序
-S : 按照文件大小排序 ; -r : 翻转排序规则 ; -u : 使用创建时间进行排序

3.9、常用Shell命令-mkdir

用法

hadoop fs -mkdir [-p] <paths>

示例:

hadoop fs -mkdir /user/hadoop/dir1 /user/hadoop/dir2
hadoop fs -mkdir hdfs://nn1.example.com/user/hadoop/dir hdfs://nn2.example.com/user/hadoop/dir

3.10、常用Shell命令-rm

用法

hadoop fs -rm [-f] [-r |-R] [-skipTrash] [-safely] URI [URI ...]

可选项:
-f : 忽略错误信息 ; -R : 递归删除 ; -r : -R
-skipTrash : 不放回收站,直接删除 ; -safely : 强制确认是否需要删除

3.11、HDFS UI交互

开启方法:
① 终端开启HDFS:hadoop的sbin目录下执行./start-dfs.sh
② 浏览器网址输入:master:50070

文件基本信息:


四、MapReduce常用Shell操作

4.1、MapReduce常用Shell

MapReduce Shell 此处指的是可以使用类似shell的命令来直接和MapReduce任务进行交互(这里不严格区分MapReduce shell及Yarn shell)。

提交任务命令

yarn jar <jar> [mainClass] args... 

查看及修改任务命令

yarn application [options] Usage: yarn app [options] 

可选项

  • appId : 指定APPlication id
  • changeQueue : 改变队列
  • kill : 停止任务
  • status : 查看任务状态

4.2、常用Shell-任务实例

查看MapReduce可以命令

yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.4.jar

使用pi计算实例

yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.4.jar pi


设置参数

yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.4.jar pi 100 10


然后我们可以获得application的id

通过这个id查看状态

yarn application -status application_1619841871021_0001


我们也可以在浏览器查看这个信息,浏览器端口:master:8088

关闭这个任务:

yarn application -kill application_1619841871021_0001



五、MapReduce任务管理

MapReduce任务日志查看:

5.1、多任务竞争

我们可以通过修改/opt/hadoop-3.1.4/etc/hadoop/下的capacity-scheduler.xml,来同时运行两个任务

cd /opt/hadoop-3.1.4/etc/hadoop/
vi capacity-scheduler.xml


改完后拷贝到其他结点

scp capacity-scheduler.xml node1:/opt/hadoop-3.1.4/etc/hadoop/
scp capacity-scheduler.xml node2:/opt/hadoop-3.1.4/etc/hadoop/
scp capacity-scheduler.xml node3:/opt/hadoop-3.1.4/etc/hadoop/

最后使配置生效

yarn rmadmin -refreshQueues


六、YARN资源管理与调度策略

6.1、YARN资源管理

MapReduce任务/资源流程


由5.1章节我们可知,当把yarn.scheduler.capacity.maximum-am-resource-percent参数调整为0.2 时,我们可以同时运行2个任务,此时Application Master最大资源为5120M(每个任务启动的AppMaster资源为2048M)

当参数调整为0.3时,可同时运行4个任务

6.2、YARN调度策略

Yarn的资源调度器是可配置的,Yarn定义了一套接口规范(接口ResourceScheduler),用户可以按照自己的需求实现这个接口中的方法。

Yarn自身自带了三种调度器,分别是:FIFO Scheduler、Capacity Scheduler和Fair Scheduler。



Yarn的资源调度器默认使用Capacity Scheduler,但是默认只有一个root.default队列。


调整Yarn资源队列

  1. 添加dev,prod 队列,删除default队列;
  2. 修改default队列配置为dev队列,并修改其capacity为40 , maxium-capacity 为60 ;
  3. 复制dev队列属性,并修改为prod队列,修改其capacity为60 , maxium-capacity 为80 ;
  4. 重启YARN集群;
cd /opt/hadoop-3.1.4/etc/hadoop
vi capacity-scheduler.xml

修改如下:









修改完后,配置prod,在dev末尾添加:

<!-- config prod queue -->
 <property>
    <name>yarn.scheduler.capacity.root.prod.capacity</name>
    <value>60</value>
    <description>Default queue target capacity.</description>
  </property>

  <property>
    <name>yarn.scheduler.capacity.root.prod.user-limit-factor</name>
    <value>1</value>
    <description>
      Default queue user limit a percentage from 0.0 to 1.0.
    </description>
  </property>

  <property>
    <name>yarn.scheduler.capacity.root.prod.maximum-capacity</name>
    <value>80</value>
    <description>
      The maximum capacity of the default queue. 
    </description>
  </property>

  <property>
    <name>yarn.scheduler.capacity.root.prod.state</name>
    <value>RUNNING</value>
    <description>
      The state of the default queue. State can be one of RUNNING or STOPPED.
    </description>
  </property>

  <property>
    <name>yarn.scheduler.capacity.root.prod.acl_submit_applications</name>
    <value>*</value>
    <description>
      The ACL of who can submit jobs to the default queue.
    </description>
  </property>

  <property>
    <name>yarn.scheduler.capacity.root.prod.acl_administer_queue</name>
    <value>*</value>
    <description>
      The ACL of who can administer jobs on the default queue.
    </description>
  </property>

  <property>
    <name>yarn.scheduler.capacity.root.prod.acl_application_max_priority</name>
    <value>*</value>
    <description>
      The ACL of who can submit applications with configured priority.
      For e.g, [user=name group=name max_priority=priority default_priority=priority]
    </description>
  </property>

   <property>
     <name>yarn.scheduler.capacity.root.prod.maximum-application-lifetime
     </name>
     <value>-1</value>
     <description>
        Maximum lifetime of an application which is submitted to a queue
        in seconds. Any value less than or equal to zero will be considered as
        disabled.
        This will be a hard time limit for all applications in this
        queue. If positive value is configured then any application submitted
        to this queue will be killed after exceeds the configured lifetime.
        User can also specify lifetime per application basis in
        application submission context. But user lifetime will be
        overridden if it exceeds queue maximum lifetime. It is point-in-time
        configuration.
        Note : Configuring too low value will result in killing application
        sooner. This feature is applicable only for leaf queue.
     </description>
   </property>

   <property>
     <name>yarn.scheduler.capacity.root.prod.default-application-lifetime
     </name>
     <value>-1</value>
     <description>
        Default lifetime of an application which is submitted to a queue
        in seconds. Any value less than or equal to zero will be considered as
        disabled.
        If the user has not submitted application with lifetime value then this
        value will be taken. It is point-in-time configuration.
        Note : Default lifetime can't exceed maximum lifetime. This feature is
        applicable only for leaf queue.
     </description>
   </property>

配置prod完后,保存、退出,拷贝到node1、node2、node3下:

scp capacity-scheduler.xml node1:/opt/hadoop-3.1.4/etc/hadoop/
scp capacity-scheduler.xml node2:/opt/hadoop-3.1.4/etc/hadoop/
scp capacity-scheduler.xml node3:/opt/hadoop-3.1.4/etc/hadoop/

最后,重启下集群(进入sbin目录)

./stop-yarn.sh
./start-yarn.sh

启动成功

最后,我们查看下网页的情况,浏览器网址输入:

master:8088

OK,我们配置成功了!

测试
接下来,我们来测试一下:

我们提交到dev队列

在网页上我们可以看到任务已经提交了

在网页上,我们可以看占用资源查看:

提交到prod队列

通过提交到dev和prod ,我们可以得出:不管是dev还是prod queue都不会占用Max_Capacity

学习笔记hadoop——hadoop基础操作——hadoop安全模式hadoop集群基本信息(代码片段)

一、Hadoop安全模式在分布式文件HDFS系统启动的时候,会有安全模式,当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结束。安全模式主要是为了系统启动的时... 查看详情

学习笔记hadoop——hadoop基础操作——mapreduce常用shell操作mapreduce任务管理(代码片段)

四、MapReduce常用Shell操作4.1、MapReduce常用ShellMapReduceShell此处指的是可以使用类似shell的命令来直接和MapReduce任务进行交互(这里不严格区分MapReduceshell及Yarnshell)。提交任务命令:yarnjar<jar>[mainClass]args...查看及修... 查看详情

学习笔记hadoop——hadoop基础操作——yarn资源管理与调度策略(代码片段)

六、YARN资源管理与调度策略6.1、YARN资源管理MapReduce任务/资源流程:由5.1章节我们可知,当把yarn.scheduler.capacity.maximum-am-resource-percent参数调整为0.2时,我们可以同时运行2个任务,此时ApplicationMaster最大资源为5120M&#... 查看详情

hadoop学习笔记之hadoop基础(代码片段)

一、虚拟机的防火墙开关1查看防火墙状态:systemctlstatusfirewalld2、关闭防火墙:systemctlstopfirewalld3、开机防火墙不启动:systemctldisablefirewalld二、查看虚拟机当前的ip地址第一种方法:ifconfig-a第二种方法:ipaddrwin... 查看详情

大数据学习笔记~hadoop基础篇(代码片段)

前言记录我在学习大数据技术中的学习笔记目录前言一、Hadoop介绍二、Hadoop发行版介绍三、Hadoop核心架构发展历史四、Hadoop三大核心组件介绍五、Hadoop集群安装部署a、伪分布式集群安装部署1.下载hadoop安装包2.设置静态ip 3、修... 查看详情

hadoop学习笔记hdfs基础命令(代码片段)

HDFS基础命令lshdfsdfs-ls/ls-Rhdfsdfs-ls-R/mkdirhdfsdfs-mkdir-p/hao/okputhdfsdfs-put/root/a.txt/dir1moveFromLocalhdfsdfs-moveFromLocal/root/hao.txt/gethdfsdfs-get/dir2/dir22/a.txt./mvhdfsdfs-mv/dir1/a.txt/ 查看详情

[学习笔记]黑马程序员-hadoop入门视频教程(代码片段)

...x常用基础命令Linux常用系统命令vi/vim文本编辑器基础使用学习目标1.理解大数据基本概念2.掌握数据分析基本步骤3.理解分布式、集群概念4.学会VMware虚拟机的导入与使用5.掌握Linux常用操作命令使用6.掌握vi/vim编辑器基础使用第一... 查看详情

hadoop学习笔记hdfsjavaapi(代码片段)

Hadoop学习笔记(五)HDFSJavaAPIspringboot项目操作hdfspom.xml<projectxmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:sc 查看详情

学习笔记hadoop——hadoop集群的安装与部署——虚拟机安装java安装(代码片段)

一、虚拟机安装1.1、了解一下概念操作系统操作系统(operationsystem,简称OS)是管理计算机硬件与软件资源的计算机程序。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设... 查看详情

hadoop基础学习

Hadoop基础学习Hadoop介绍Hadoop现状Hadoop的优点:三高一低Hadoop的版本发展Hadoop集群整体概述HDFS集群YARN集群Hadoop集群的开启HDFS分布式文件系统介绍HDFS简介HDFS核心属性及功能主从架构分布式存储元数据记录分块存储副本机制names... 查看详情

hadoop学习笔记--hbase相关操作指令(代码片段)

文章目录引言0.HBase的启动与停止1.创建表2.删除表3.表的其他操作3.1修改表结构3.2查看表结构3.3显示所有用户定义的表3.4查询表是否存在3.5查询表是否可用3.6查询表中记录数4.插入数据4.1插入单条数据4.2插入多行数据5.删除数据5.1... 查看详情

学习笔记hadoop——虚拟机安装java安装(代码片段)

文章目录一、虚拟机安装1.1、了解一下概念1.2、安装流程二、java安装2.1、了解2.2、安装流程一、虚拟机安装1.1、了解一下概念操作系统操作系统(operationsystem,简称OS)是管理计算机硬件与软件资源的计算机程序。操... 查看详情

hadoop基础学习笔记

 告警和日志信息监控目录告警和日志信息监控实验一:查看大数据平台日志信息         实验任务一:查看大数据平台主机日志步骤一:查看内核及公共消息日志(/var/log/messages)。步骤二:查看计... 查看详情

hadoop学习笔记—15.hbase框架学习(基础实践篇)

一、HBase的安装配置1.1伪分布模式安装  伪分布模式安装即在一台计算机上部署HBase的各个角色,HMaster、HRegionServer以及ZooKeeper都在一台计算机上来模拟。  首先,准备好HBase的安装包,我这里使用的是HBase-0.94.7的版本,已经... 查看详情

01_hadoop学习笔记内容说明

Hadoop学习笔记内容说明_001、 观看云帆大数据梦琪老师的《企业级Hadoop1.x应用开发基础课程》2014年4月左右版本。2、 博客是在梦琪老师的随堂笔记上改动的,方便的是自己以后回顾学习,也或许能给需要改方面帮助的同... 查看详情

学习笔记hadoop——hadoop集群的安装与部署——配置ssh无密码登录(代码片段)

三、配置ssh无密码登录3.1、SSHSSH为SecureShell的缩写,由IETF的网络小组(NetworkWorkingGroup)所制定;SSH为建立在应用层基础上的安全协议。SSH是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用S... 查看详情

学习笔记hadoop——hadoop集群的安装与部署——配置hadoop集群(代码片段)

四、配置Hadoop集群Hadoop集群总体规划Hadoop集群安装采用下面步骤:在Master节点:上传并解压Hadoop安装包。在Master节点:配置Hadoop所需configuration配置文件。在Master节点:拷贝配置好的Hadoop安装包到其他节点。在所有... 查看详情

学习笔记hadoop——hadoop集群的安装与部署(代码片段)

文章目录一、Hadoop集群部署模式二、配置固定IP2.1、虚拟机DHCP2.2、步骤三、配置ssh无密码登录3.1、SSH3.2、MS架构3.3、配置主节点无密码登录四、配置Hadoop集群4.1、上传并解压Hadoop安装包4.2、修改配置文件:hadoop-env.sh4.3、修改... 查看详情