自己总结的Hadoop集群配置相关,hdfs篇(持续总结最新最全hadoop资料)

所用hadoop版本,2.8.0

什么是hadoop?

(1)hadoop是用于处理(运算分析)海量数据的,且是采用分布式集群的方式;

(2)通俗来说,可以把hadoop理解为一个编程框架(比如springmvc、spring、hibernate/mybatis),有着自己特定的API封装和用户编程规范,用户可借助这些API来实现数据处理逻辑;

(3)从另一个角度,hadoop又可以理解为一个提供服务的软件(比如数据库服务oracle/mysql、索引服务solr,缓存服务redis等),用户程序的功能都是通过客户端向hadoop集群请求服务来实现;

可以在windows上操作远程的mysql服务器

我们也可以在windows上操作远程的hadoop集群

(4)具体来说,hadoop两个大的功能:海量数据的存储;海量数据的分析;

hadoop中的核心组件

分布式文件系统:HDFS —— 实现将文件分布式存储在很多的服务器上(海量数据的存储服务)

分布式运算编程框架:MAPREDUCE —— 实现在很多机器上分布式并行运算(导jar包,写程序) 进行海量数据分析(替代品: spark等) 思想

分布式资源调度平台:YARN —— 帮用户调度大量的mapreduce程序,并合理分配运算资源

hdfs的工作机制:

1、客户把一个文件存入hdfs,其实hdfs会把这个文件切块后,分散存储在N台linux机器系统中<准确来说:切块的行为是由客户端决定的>

负责存储文件块的角色:datanode

2、一旦文件被切块存储,那么,hdfs中就必须有一个机制,来记录用户的每一个文件的切块信息,及每一块的具体存储机器

负责记录块信息的角色是:name node

存储和读取文件的时候,都需要经过namenode

3、为了保证数据的安全性,hdfs可以将每一个文件块在集群中存放多个副本(到底存几个副本,是由当时存入该文件的客户端指定的)

副本:如果说3个副本,就是指这个文件有3份,而不是4份。

linux搭建集群和免密登陆网上很多,可自行查找

hadoop文件夹说明

bin hadoop管理
sbin 集群管理 
etc 配置文件
share 说明文档,datanote上删除doc

hdfs配置文件(必须配置的四点)

1) 指定hadoop的默认文件系统为:hdfs
2) 指定hdfs的namenode节点为哪台机器
3) 指定namenode软件存储元数据的本地目录
4) 指定datanode软件存放文件块的本地目录
hadoop-env.sh(运行环境)
export JAVA_HOME=/usr/local/jdk
core-site.xml(1)(2)
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hdp-01:9000</value>
</property>
</configuration>
hdfs-site.xml(3)(4)
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/root/dfs/name</value>
</property>


<property>
<name>dfs.datanode.data.dir</name>
<value>/root/dfs/data</value
</property>


</configuration>
slaves 用于配置自动化启动集群(需要免密登陆,包括本机)
格式
节点名(ip)
节点名
注意datanode节点的路径要和namenode一样,默认是去相同的路径寻找hadoop-daemon.sh启动,不然要改脚本才能正常启动
配置好后就可以把目录发送给datanode的机器

配置好后先给datanode节点发送hadoop目录,这是发送了四台机器的密令

for iin {2..5}; do scp -r /root/apps/hadoop-2.8.0 hdp-0$i:/root/apps/; done


hdfs初始化

在namenode上执行hadoop的命令来初始化namenode的元数据存储目录,不能自己创建,这步是生成集群的关键,其它datanode节点根据clusterId记录下它,不要重复初始化,会失去 datanode节点,需要删除原datanode储存目录,会丢失数据
hadoop namenode -format(格式化)

启动

hadoop-daemon.sh start namenode

hadoop-daemon.sh start datanode(datanode节点直接启动就好,会自动获取namenode节点)

for i in{2..5}; do ssh hdp-0$i hadoop-daemon.sh start datanode; done 启动其他节点datanode

如果配置了slaves,可直接使用start-dfs.sh和stop-dfs.sh启动和关闭整个系统

需要注意的问题:必须先格式化那么namenode节点再启动datanode,因为启动datanode节点时会根据core-site.xml自动获取namenode的id,同时namenode记录下datanode。如果顺序颠倒,datanode记录的是原namenode的id,关联不起来,同时新的datanode无法创建,启动失败,解决方案:格式化datanode或删除配置的datanode的目录,再启动一次datanode即可。每次格式化namenode都相当于新建了一个管理系统,旧的datanode虽然数据还在但失去了关联关系,数据组装不起来。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值