怎么进去Vim hdfs-site.xml

怎么进去Vim hdfs-site.xml,第1张

你好,看你的问题描述,猜测你应该是想使用vim编辑器去编辑hdfs-sitexml这个文件 但看你问题中写的:

Vim hdfs-sitexml

猜测你那边一定是报错了,问题在于,linux下的命令是大小写敏感的,所谓大小写敏感,说白了就是 vim Vim viM是不同的命令

而linux下默认vim命令三个字母都是小写的,所以将上面的命令改为:

vim hdfs-sutexml

即可正常编辑文件了

写在最后:

a 可以使用Vim作为可以识别的命令,这个也很简单有需要可以追问;

b如果你那边使用小写的vim也不行,可能是vim这个软件未安装;

希望对你有帮助,欢迎追问

数据中最宝贵、最难以代替的就是数据,一切都围绕数据。

HDFS是最早的大数据存储系统,存储着宝贵的数据资产,各种新算法、框架要想得到广泛使用,必须支持HDFS,才能获取已存储在里面的数据。所以大数据技术越发展,新技术越多,HDFS得到的支持越多,越离不开HDFS。 HDFS也许不是最好的大数据存储技术,但依然是最重要的大数据存储技术

HDFS是如何实现大数据高速、可靠的存储和访问的呢?

Hadoop分布式文件系统HDFS的设计目标是管理数以千计的服务器、数以万计的磁盘,将大规模的服务器计算资源当作一个单一存储系统进行管理,对应用程序提供数以PB计的存储容量,让应用程序像使用普通文件系统一样存储大规模的文件数据。

文件以多副本的方式进行存储:

缺点:

优点:

HDFS的大容量存储和高速访问的实现。

RAID将数据分片后,在多块磁盘上并发进行读写访问,提高了存储容量、加快了访问速度,并通过数据冗余校验提高了数据可靠性,即使某块磁盘损坏也不会丢数据。将RAID的设计理念扩大到整个分布式服务器集群,就产生了分布式文件系统,这便是Hadoop分布式文件系统的核心原理。

和RAID在多个磁盘上进行文件存储及并行读写的思路一样,HDFS是在一个大规模分布式服务器集群上,对数据分片后进行并行读写及冗余存储。因为HDFS可部署在一个大的服务器集群,集群中所有服务器的磁盘都可供HDFS使用,所以整个HDFS的存储空间可以达到PB级。

HDFS是主从架构。一个HDFS集群会有一个NameNode(命名节点,简称NN),作为主服务器(master server)。

HDFS公开了文件系统名称空间,允许用户将数据存储在文件中,就好比我们平时使用os中的文件系统一样,用户无需关心底层是如何存储数据的。 在底层,一个文件会被分成一或多个数据块,这些数据库块会被存储在一组数据节点中。在CDH中数据块的默认128M。 在NameNode,可执行文件系统的命名空间 *** 作,如打开,关闭,重命名文件等。这也决定了数据块到数据节点的映射。

HDFS被设计为可运行在普通的廉价机器上,而这些机器通常运行着一个Linux *** 作系统。一个典型的HDFS集群部署会有一个专门的机器只能运行 NameNode ,而其他集群中的机器各自运行一个 DataNode 实例。虽然一台机器上也可以运行多个节点,但不推荐。

负责文件数据的存储和读写 *** 作,HDFS将文件数据分割成若干数据块(Block),每个DataNode存储一部分Block,这样文件就分布存储在整个HDFS服务器集群中。

应用程序客户端(Client)可并行访问这些Block,从而使得HDFS可以在服务器集群规模上实现数据并行访问,极大提高访问速度。

HDFS集群的DataNode服务器会有很多台,一般在几百台到几千台,每台服务器配有数块磁盘,整个集群的存储容量大概在几PB~数百PB。

负责整个分布式文件系统的元数据(MetaData)管理,即文件路径名、数据块的ID以及存储位置等信息,类似os中的文件分配表(FAT)。

HDFS为保证数据高可用,会将一个Block复制为多份(默认3份),并将多份相同的Block存储在不同服务器,甚至不同机架。当有磁盘损坏或某个DataNode服务器宕机,甚至某个交换机宕机,导致其存储的数据块不能访问时,客户端会查找其备份Block访问。

HDFS中,一个文件会被拆分为一个或多个数据块。默认每个数据块有三个副本,每个副本都存放在不同机器,而且每一个副本都有自己唯一的编号:

文件/users/sameerp/data/part-0的复制备份数设为2,存储的BlockID分别为1、3:

上述任一台服务器宕机后,每个数据块都至少还有一个备份存在,不会影响对文件/users/sameerp/data/part-0的访问。

和RAID一样,数据分成若干Block后,存储到不同服务器,实现数据大容量存储,并且不同分片的数据能并行进行读/写 *** 作,实现数据的高速访问。

副本存放:NameNode节点选择一个DataNode节点去存储block副本的过程,该过程的策略是在可靠性和读写带宽间权衡。

《Hadoop权威指南》中的默认方式:

Google大数据“三驾马车”的第一驾是GFS(Google 文件系统),而Hadoop的第一个产品是HDFS,分布式文件存储是分布式计算的基础。

这些年来,各种计算框架、各种算法、各种应用场景不断推陈出新,但大数据存储的王者依然是HDFS。

磁盘介质在存储过程中受环境或者老化影响,其存储的数据可能会出现错乱。

HDFS对存储在DataNode上的数据块,计算并存储校验和(CheckSum)。在读数据时,重新计算读取出来的数据的校验和,校验不正确就抛异常,应用程序捕获异常后就到其他DataNode上读取备份数据。

DataNode监测到本机的某块磁盘损坏,就将该块磁盘上存储的所有BlockID报告给NameNode,NameNode检查这些数据块还在哪些DataNode上有备份,通知相应的DataNode服务器将对应的数据块复制到其他服务器上,以保证数据块的备份数满足要求。

DataNode会通过心跳和NameNode保持通信,如果DataNode超时未发送心跳,NameNode就会认为这个DataNode已经宕机失效,立即查找这个DataNode上存储的数据块有哪些,以及这些数据块还存储在哪些服务器上,随后通知这些服务器再复制一份数据块到其他服务器上,保证HDFS存储的数据块备份数符合用户设置的数目,即使再出现服务器宕机,也不会丢失数据。

NameNode是整个HDFS的核心,记录着HDFS文件分配表信息,所有的文件路径和数据块存储信息都保存在NameNode,如果NameNode故障,整个HDFS系统集群都无法使用;如果NameNode上记录的数据丢失,整个集群所有DataNode存储的数据也就没用了。

所以,NameNode高可用容错能力非常重要。NameNode采用主从热备的方式提供高可用服务:

集群部署两台NameNode服务器:

两台服务器通过Zk选举,主要是通过争夺znode锁资源,决定谁是主服务器。而DataNode则会向两个NameNode同时发送心跳数据,但是只有主NameNode才能向DataNode返回控制信息。

正常运行期,主从NameNode之间通过一个共享存储系统shared edits来同步文件系统的元数据信息。当主NameNode服务器宕机,从NameNode会通过ZooKeeper升级成为主服务器,并保证HDFS集群的元数据信息,也就是文件分配表信息完整一致。

软件系统,性能差点,用户也许可接受;使用体验差,也许也能忍受。但若可用性差,经常出故障不可用,就麻烦了;如果出现重要数据丢失,那开发摊上大事。

而分布式系统可能出故障地方又非常多,内存、CPU、主板、磁盘会损坏,服务器会宕机,网络会中断,机房会停电,所有这些都可能会引起软件系统的不可用,甚至数据永久丢失。

所以在设计分布式系统的时候,软件工程师一定要绷紧可用性这根弦,思考在各种可能的故障情况下,如何保证整个软件系统依然是可用的。

## 6 保证系统可用性的策略

任何程序、任何数据,都至少要有一个备份,也就是说程序至少要部署到两台服务器,数据至少要备份到另一台服务器上。此外,稍有规模的互联网企业都会建设多个数据中心,数据中心之间互相进行备份,用户请求可能会被分发到任何一个数据中心,即所谓的异地多活,在遭遇地域性的重大故障和自然灾害的时候,依然保证应用的高可用。

当要访问的程序或者数据无法访问时,需要将访问请求转移到备份的程序或者数据所在的服务器上,这也就是 失效转移 。失效转移你应该注意的是失效的鉴定,像NameNode这样主从服务器管理同一份数据的场景,如果从服务器错误地以为主服务器宕机而接管集群管理,会出现主从服务器一起对DataNode发送指令,进而导致集群混乱,也就是所谓的“脑裂”。这也是这类场景选举主服务器时,引入ZooKeeper的原因。ZooKeeper的工作原理,我将会在后面专门分析。

当大量的用户请求或者数据处理请求到达的时候,由于计算资源有限,可能无法处理如此大量的请求,进而导致资源耗尽,系统崩溃。这种情况下,可以拒绝部分请求,即进行 限流 ;也可以关闭部分功能,降低资源消耗,即进行 降级 。限流是互联网应用的常备功能,因为超出负载能力的访问流量在何时会突然到来,你根本无法预料,所以必须提前做好准备,当遇到突发高峰流量时,就可以立即启动限流。而降级通常是为可预知的场景准备的,比如电商的“双十一”促销,为了保障促销活动期间应用的核心功能能够正常运行,比如下单功能,可以对系统进行降级处理,关闭部分非重要功能,比如商品评价功能。

HDFS是如何通过大规模分布式服务器集群实现数据的大容量、高速、可靠存储、访问的。

1文件数据以数据块的方式进行切分,数据块可以存储在集群任意DataNode服务器上,所以HDFS存储的文件可以非常大,一个文件理论上可以占据整个HDFS服务器集群上的所有磁盘,实现了大容量存储。

2HDFS一般的访问模式是通过MapReduce程序在计算时读取,MapReduce对输入数据进行分片读取,通常一个分片就是一个数据块,每个数据块分配一个计算进程,这样就可以同时启动很多进程对一个HDFS文件的多个数据块进行并发访问,从而实现数据的高速访问。关于MapReduce的具体处理过程,我们会在专栏后面详细讨论。

3DataNode存储的数据块会进行复制,使每个数据块在集群里有多个备份,保证了数据的可靠性,并通过一系列的故障容错手段实现HDFS系统中主要组件的高可用,进而保证数据和整个系统的高可用。

通过配置本地数据库的tns配置文件实现:

去oracle安装目录下oracle\product\1020\db_2\NETWORK\ADMIN\ 找到tnsnamesora,用记事本打开,里边有远程数据库的tns连接配置串如下

ORCL23 =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192168323)(PORT = 1521))

)

(CONNECT_DATA =

(SID = ORCL)

)

)

添加好ip、端口和目标数据库的实例名(SID),然后确保tns名称(ORCL23)在整个文档中唯一,保存后打开数据库连接工具,输入远程数据库上的用户名密码,选择数据库对象为你配置的连接名就可以了

对spark、hive、impala、hdfs的常用命令作了如下总结,欢迎大家补充!

1 Spark的使用:

以通过SecureCRT访问IP地址:1010234198 为例进行说明:

先输入:ll //查询集群是否装有spark

>su - mr

>/home/mr/spark/bin/beeline -u "jdbc:hive2:/bigdata198:18000/" -n mr -p ""

>show databases; //显示其中数据库,例如

>use bigmax; //使用数据库bigmax

>show tables; //查询目录中所有的表

>desc formatted TableName; //显示表的详细信息,包括分区、字段、地址等信息

>desc TableName; //显示表中的字段和分区信息

>select count() from TableName; //显示表中数据数量,可以用来判断表是否为空

>drop table TableName; //删除表的信息

>drop bigmax //删除数据库bigmax

>describe database zxvmax //查询数据库zxvmax信息

创建一个表

第一步:

>create external table if not exists lte_Amaze //创建一个叫lte_Amaze的表

( //括号中每一行为表中的各个字段的名称和其所属的数据类型,并用空格隔开

DateTime String,

MilliSec int,

Network int,

eNodeBID int,

CID int,

IMSI String,

DataType int,

AoA int,

ServerRsrp int,

ServerRsrq int,

TA int,

Cqi0 Tinyint,

Cqi1 Tinyint //注意,最后一个字段结束后,没有逗号

)

partitioned by (p_date string, p_hour INT) //以p_date和p_hour作为分区

row format delimited fields terminated by ',' //表中行结构是以逗号作为分隔符,与上边的表中字段以逗号结尾相一致/

stored as textfile; //以文本格式进行保存

第二步:添加分区,指定分区的位置

>alter table lte_Amaze add partition (p_date='2015-01-27',p_hour=0) location'/lte/nds/mr/lte_nds_cdt_uedetail/p_date=2015-01-27/p_hour=0';

//添加lte_Amaze表中分区信息,进行赋值。

//并制定分区对应目录/lte/nds/mr下表lte_nds_cdt_uedetail中对应分区信息

第三步:察看添加的结果

>show partitions lte_Amaze; //显示表的分区信息

2 hdfs使用:

#su - hdfs //切换到hdfs用户下 、

#hadoop fs –ls ///查看进程

# cd /hdfs/bin //进入hdfs安装bin目录

>hadoop fs -ls /umtsd/cdt/ //查询/umtsd/cdt/文件目录

>hadoop fs -mkdir /umtsd/test //在/umtsd目录下创建test目录

>hadoop fs -put /home/data/u1002csv /impala/data/u5002 //将home/data/u1002csv这个文件put到hdfs文件目录上。put到hdfs上的数据文件以逗号“,”分隔符文件(csv),数据不论类型,直接是数据,没有双引号和单引号

>hadoop fs -rm /umtsd/test/testtxt //删除umtsd/test目录下的testtxt文件

>hadoop fs -cat /umtsd/test/testtxt //查看umtsd/test目录下的testtxt文件内容

3hive *** 作使用:

#su - mr //切换到mr用户下

#hive //进入hive查询 *** 作界面

hive>show tables; //查询当前创建的所有表

hive>show databases; //查询当前创建的数据库

hive>describe table_name; {或者desc table_name}//查看表的字段的定义和分区信息,有明确区分(impala下该命令把分区信息以字段的形式显示出来,不怎么好区分)

hive> show partitions table_name; //查看表对应数据现有的分区信息,impala下没有该命令

hive> quit;//退出hive *** 作界面

hive>desc formatted table_name; 查看表结构,分隔符等信息

hive> alter table ceshi change id id int; 修改表的列数据类型 //将id数据类型修改为int 注意是两个id

hive> SHOW TABLES 's'; 按正条件(正则表达式)显示表,

[mr@aico ~]$ exit; 退出mr用户 *** 作界面,到[root@aico]界面

impala *** 作使用:

#su - mr //切换到mr用户下

#cd impala/bin //进入impala安装bin目录

#/impala/bin> impala-shellsh -i 1010234166/localhost //进入impala查询 *** 作界面

[1010234166:21000] >show databases; //查询当前创建的数据库

[1010234166:21000] >use database_name; //选择使用数据库,默认情况下是使用default数据库

[1010234166:21000] > show tables; //查询当前数据库下创建的所有表

[1010234166:21000] >describe table_name; //查看表的字段的定义,包括分区信息,没有明确区分

[1010234166:21000] > describe formatted table_name; //查看表对应格式化信息,包括分区,所属数据库,创建用户,创建时间等详细信息。

[1010234166:21000] >refresh table_name; //刷新一下,保证元数据是最新的

[1010234166:21000] > alter TABLE U107 ADD PARTITION(reportDate="2013-09-27",rncid=487)LOCATION '/umts/cdt/

MREMITABLE/20130927/rncid=487' //添加分区信息,具体的表和数据的对应关系

[1010234166:21000] > alter TABLE U100 drop PARTITION(reportDate="2013-09-25",rncid=487); //删除现有的分区,数据与表的关联

[1010234166:21000] >quit; //退出impala *** 作界面

[mr@aicod bin]$ impala-shell; 得到welcome impala的信息,进入impala 查询 *** 作界面

[aicod:21000] > 按两次tab键,查看可以用的命令

alter describe help profile shell values

connect drop history quit show version

create exit insert select unset with

desc explain load set use

这区别可大了,不是一个概念。mysql是传统的关系型数据库。hdfs是nosql hadoop的存储方式。hdfs是分布式的自带高可用存储,文件格式跟mysql的存储引擎不一样。大数据离线存储,当然是hdfs更合适

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。

用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。

Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。

广义的Hadoop,一般称为Hadoop生态系统,如下所示。

Hadoop生态系统中这些软件的作用:

HDFS 采用了主从(Master/Slave)结构模型,一个HDFS集群包括一个名称节点(NameNode)和若干个数据节点(DataNode)。

HDFS采用Java语言开发,因此任何支持JVM的机器都可以部署名称节点和数据节点。

在配置好Hadoop 集群之后,可以通过浏览器访问 >

以上就是关于怎么进去Vim hdfs-site.xml全部的内容,包括:怎么进去Vim hdfs-site.xml、HDFS 为何在大数据领域经久不衰、sqoop把oracle导入到hdfs,一条记录怎么到hdfs里面变成两条了等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9451798.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存