hadoop安全模式

2020-09-22 23:07发布

莫名其妙进了安全模式不知道怎么退出

莫名其妙进了安全模式不知道怎么退出

6条回答
@CcCc
2楼 · 2020-09-22 23:30

hadoop启动检查副本块数,就会进入safemode

  safemode的相关情况

 

虽然不能进行修改文件的操作,但是可以浏览目录结构、查看文件内容的。

在命令行下是可以控制安全模式的进入、退出和查看的。

命令  hadoop dfsadmin -safemode get  查看安全模式状态

命令  hadoop dfsadmin -safemode enter    进入安全模式状态

命令   hadoop dfsadmin -safemode leave   离开安全模式

 安全模式是hadoop的一种保护机制,在启动时,最好是等待集群自动退出,然后进行文件操作。

 

一般进入safemode情况有:①启动或者重新启动hdfs时;②HDFS维护升级时

 

可以使用fsck 检查一下HDFS的健康度 

  fsck相关介绍:

    hadoop fsck
    Usage:DFSck [-move | -delete | -openforwrite] [-files [-blocks [-locations | -racks]]]
     检查这个目录中的文件是否完整
    -move 破损的文件移至/lost+found目录
    -delete 删除破损的文件
    -openforwrite 打印正在打开写操作的文件
    -files 打印正在check的文件名
    -blocks 打印block报告(需要和-files参数一起使用)
    -locations 打印每个block的位置信息(需要和-files参数一起使用)
    -racks 打印位置信息的网络拓扑图(需要和-files参数一起使用)

    hadoop fsck /
      用这个命令可以检查整个文件系统的健康状况,但是要注意它不会主动恢复备份缺失的block,这个是由NameNode单独的线程异步处理的

 


元则清
3楼 · 2020-09-23 08:59

首先使用下面这一条命令检查安全模式是否开启:

bin/hdfs dfsadmin -safemode get

输出结果会显示安全模式是属于开启状态还是关闭状态,如果是开启状态,可以使用下面这一条命令来关闭

bin/hdfs dfsadmin -safemode leave

但是,我遇到的是使用上面的命令无法强制退出安全模式。

其中一个原因是服务器磁盘满了

可以使用df -h 命令查看磁盘使用状况,如果磁盘使用率很高,请往下看。。。。

使用sudo du -sh /* 查看占用内存最多的目录,然后cd 到那个对应的目录,继续往下查看。。。。

经检查,我的hadoop 的 data目录太大,如果简单粗暴的话,直接格式化,或者可以在hdfs上删除不重要的数据。


魏魏姐
4楼 · 2020-09-23 09:07

开始的时候会有安全模式,当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结束。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。运行期通过命令也可以进入安全模式。

我想吃肉
5楼 · 2020-09-23 09:28

自动进入安全模式的原因可能有:
1)  集群进行节点的剔除(此时有些数据副本的block被发现丢失,因此会进入安全模式直到找到或恢复完全的副本为止。) 这种情况要恢复完全部的副本可能会用时很久,如果之前数据不需要,可以直接进行删除,或是直接手动退出安全模式:hadoop dfsadmin -safemode leave。或是在hdfs-site.xml中设置如下参数:


      dfs.namenode.safemode.threshold-pct
      0
    

上述参数的含义是hdfs获取到整个文件系统block的百分之多少才可以退出安全模式,设为0则代表永远不会进入安全模式。如果不使用上述方法,则需要等待一段时间让block进行恢复。
2)  集群数据节点个数过少(此时在hdfs-site.xml中若设置replication=3,则可能无法进行多副本的存储导致进入安全模式,该情况下可以重新设置副本数<=2来解决)
3)  还有一种情况就是磁盘空间不足,也就是说HDFS预警。此时可以删除一些historyserver的日志或是一些没有用的数据来缓解。


我的网名不再改
6楼 · 2020-09-23 15:16

Hadoop在NameNode重启的时候就会进入到安全模式,在安全模式中HDFS只支持访问元数据的操作才会返回成功,但是又不少朋友们不了解Hadoop,那么我们现在就去看看Hadoop的安全模式介绍。

cd  /usr/local/hadoop/hadoop-3.1.2/bin

进入安全模式:     ./hadoop dfsadmin -safemode enter

  

退出安全模式

   

 安全模式下查看hdfs文件:

 

 

     在分布式文件系统启动的时候,开始的时候会有安全模式,当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结束。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。运行期通过命令也可以进入安全模式。在实践过程中,系统启动的时候去修改和删除文件也会有安全模式不允许修改的出错提示,只需要等待一会儿即可。SafeModeException 异常

  运行Hadoop程序时,有时候会报以下错误:

  org.apache.hadoop.dfs.SafeModeException: Cannot delete/user/hadoop/input. Name node is in safe mode.

  那我们来分析下这个错误,从字面上来理解:“Name node is in safe mode.”

  现在就清楚了,那现在要解决这个问题,我想让Hadoop不处在safe mode 模式下,能不能不用等,直接解决呢?答案是可以的,

  只要在Hadoop的目录下输入:

  $bin/hadoop dfsadmin -safemode leave

  也就是关闭Hadoop的安全模式,这样问题就解决了。

  safemode模式

  NameNode在启动的时候首先进入安全模式,如果datanode丢失的block达到一定的比例(1-dfs.safemode.threshold.pct),则系统会一直处于安全模式状态即只读状态。dfs.safemode.threshold.pct(缺省值0.999f)表示HDFS启动的时候,如果DataNode上报的block个数达到了元数据记录的block个数的0.999倍才可以离开安全模式,否则一直是这种只读模式。如果设为1则HDFS永远是处于SafeMode。

  下面这行摘录自NameNode启动时的日志(block上报比例1达到了阀值0.9990)

  The ratio of reported blocks 1.0000 has reached the threshold0.9990. Safe mode will be turned off automatically in 18seconds.

  ?1.修改dfs.safemode.threshold.pct为一个比较小的值,缺省是0.999。

  ?2. hadoop dfsadmin -safemode leave命令强制离开

  hadoop dfsadmin-safemode 命令

  格式:Usage: java DFSAdmin [-safemode enter | leave | get |wait]

  用户可以通过dfsadmin -safemode value 来操作安全模式,参数value的说明如下:

  enter - 进入安全模式

  leave - 强制NameNode离开安全模式

  get?? - 返回安全模式是否开启的信息

  wait? - 等待,一直到安全模式结束。


爱搞事的IT小男孩
7楼 · 2020-09-24 09:52

刚启动完hadoop的时候,hadoop会进入安全模式,此时不能对hdfs进行上传,修改,删除文件的操作。

hadoop dfsadmin -safemode get   命令是用来查看当前hadoop安全模式的开关状态

hadoop dfsadmin -safemode enter  命令是打开安全模式

hadoop dfsadmin -safemode leave 命令是离开安全模式

相关问题推荐

  • 什么是大数据时代?2021-01-13 21:23
    回答 100

    大数据(big data)一词越来越多地被提及,人们用它来描述和定义信息爆炸时代产生的海量数据,而这个海量数据的时代则被称为大数据时代。随着云时代的来临,大数据(Big data)也吸引了越来越多的关注。大数据(Big data)通常用来形容一个公司创造的大量非结...

  • 回答 84

    Java和大数据的关系:Java是计算机的一门编程语言;可以用来做很多工作,大数据开发属于其中一种;大数据属于互联网方向,就像现在建立在大数据基础上的AI方向一样,他两不是一个同类,但是属于包含和被包含的关系;Java可以用来做大数据工作,大数据开发或者...

  • 回答 52
    已采纳

    学完大数据可以从事很多工作,比如说:hadoop 研发工程师、大数据研发工程师、大数据分析工程师、数据库工程师、hadoop运维工程师、大数据运维工程师、java大数据工程师、spark工程师等等都是我们可以从事的工作岗位!不同的岗位,所具备的技术知识也是不一样...

  • 回答 29

    简言之,大数据是指大数据集,这些数据集经过计算分析可以用于揭示某个方面相关的模式和趋势。大数据技术的战略意义不在于掌握庞大的数据信息,而在于对这些含有意义的数据进行专业化处理。大数据的特点:数据量大、数据种类多、 要求实时性强、数据所蕴藏的...

  • 回答 14

    tail -f的时候,发现一个奇怪的现象,首先 我在一个窗口中 tail -f test.txt 然后在另一个窗口中用vim编辑这个文件,增加了几行字符,并保存,这个时候发现第一个窗口中并没有变化,没有将最新的内容显示出来。tail -F,重复上面的实验过程, 发现这次有变化了...

  • 回答 18

    您好针对您的问题,做出以下回答,希望有所帮助!1、大数据行业还是有非常大的人才需求的,对于就业也有不同的岗位可选,比如大数据工程师,大数据运维,大数据架构师,大数据分析师等等,就业难就难在能否找到适合的工作,能否与你的能力和就业预期匹配。2、...

  • 回答 17

    最小的基本单位是Byte应该没多少人不知道吧,下面先按顺序给出所有单位:Byte、KB、MB、GB、TB、PB、EB、ZB、YB、DB、NB,按照进率1024(2的十次方)计算:1Byte = 8 Bit1 KB = 1,024 Bytes 1 MB = 1,024 KB = 1,048,576 Bytes 1 GB = 1,024 MB = 1,048,576...

  • 回答 33

    大数据的定义。大数据,又称巨量资料,指的是所涉及的数据资料量规模巨大到无法通过人脑甚至主流软件工具,在合理时间内达到撷取、管理、处理、并整理成为帮助企业经营决策更积极目的的资讯。大数据是对大量、动态、能持续的数据,通过运用新系统、新工具、新...

  • 回答 5

    MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL的版本:针对不同的用户,MySQL分为两种不同的版本:MySQL Community Server社区版本,免费,但是Mysql不提供...

  • mysql安装步骤mysql 2022-05-07 18:01
    回答 2

    mysql安装需要先使用yum安装mysql数据库的软件包 ;然后启动数据库服务并运行mysql_secure_installation去除安全隐患,最后登录数据库,便可完成安装

  • 回答 5

    1.查看所有数据库showdatabases;2.查看当前使用的数据库selectdatabase();3.查看数据库使用端口showvariableslike&#39;port&#39;;4.查看数据库编码showvariableslike‘%char%’;character_set_client 为客户端编码方式; character_set_connection 为建立连接...

  • 回答 5

    CREATE TABLE IF NOT EXISTS `runoob_tbl`(    `runoob_id` INT UNSIGNED AUTO_INCREMENT,    `runoob_title` VARCHAR(100) NOT NULL,    `runoob_author` VARCHAR(40) NOT NULL,    `submission_date` DATE,    PRI...

  • 回答 9

    学习多久,我觉得看你基础情况。1、如果原来什么语言也没有学过,也没有基础,那我觉得最基础的要先选择一种语言来学习,是VB,C..,pascal,看个人的喜好,一般情况下,选择C语言来学习。2、如果是有过语言的学习,我看应该一个星期差不多,因为语言的理念互通...

  • 回答 7

    添加语句 INSERT插入语句:INSERT INTO 表名 VALUES (‘xx’,‘xx’)不指定插入的列INSERT INTO table_name VALUES (值1, 值2,…)指定插入的列INSERT INTO table_name (列1, 列2,…) VALUES (值1, 值2,…)查询插入语句: INSERT INTO 插入表 SELECT * FROM 查...

  • 回答 5

    看你什么岗位吧。如果是后端,只会CRUD。应该是可以找到实习的,不过公司应该不会太好。如果是数据库开发岗位,那这应该是不会找到的。

  • 回答 7

    查找数据列 SELECT column1, column2, … FROM table_name; SELECT column_name(s) FROM table_name 

没有解决我的问题,去提问