博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
大数据基础之hdfs3
阅读量:6409 次
发布时间:2019-06-23

本文共 4306 字,大约阅读时间需要 14 分钟。

1、hdfs的副本的配置

修改hdfs-site.xml文件

 
<!-- 注释配置数据块的冗余度,默认是3 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!--注释配置HDFS的权限检查,默认是true-->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hsiehchou122:50090</value>
</property>

需要同步到其它机器:

 
scp hdfs-site.xml hsiehchou122:$PWD
scp hdfs-site.xml hsiehchou123:$PWD
scp hdfs-site.xml hsiehchou124:$PWD

这里我划重点(亲自经历)

如果原来的分布式hadoop集群的主节点有Secondary NameNode,需要配置到其他节点,因为如果主节点挂了,其也是挂了,它的作用是在HDFS中提供一个检查点,相当于NameNode的助手节点
职责是:合并NameNode的edit logs到fsimage文件中

2、hadoop启动方式

1)启动hdfs集群

start-dfs.sh
2)启动yarn集群
start-yarn.sh
3)启动hadoop集群
start-all.sh

3、大数据干什么的

1)海量数据的存储(mysql/oracle)

分布式文件系统hdfs
dfs->Hdfs
mapreduce->mapreduce
bigtable->hbase
分而治之!

2)海量数据的计算

分布式计算框架mapreduce
配置checkpoint时间

 
<property>
<name>dfs.namenode.checkpoint.period</name>
<value>7200</value>
</property>

systemctl set-default graphical.target由命令行模式更改为图形界面模式

systemctl set-default multi-user.target由图形界面模式更改为命令行模式

4、hdfs-namenode工作机制

0、加载编辑日志与镜像文件到内存(NameNode)

edits_0001
edits_0002
fsimage fsimage fsimage
1、客户端发起命令(client)
hdfs dfs -ls /
2、滚动正在写的edits(NameNode)
3、记录操作日志更新 滚动日志(NameNode)
4、拷贝到Secondary NameNode
NameNode请求是否需要checkpoint

Secondary NameNode

触发checkpoint条件:
1、定时的时间
2、edits中数据已满
Secondary NameNode请求执行checkpoint
5、加载内存进行合并
6、生成镜像fsimage.checkpoint
7、拷贝到NameNode
8、NameNode对fsimage.checkpoint重命名成fsimage

hadoop2.8.4

安装部署

1)准备工作
设置主机名:vi /etc/hostname
注意:需要重启 reboot
设置映射:vi /etc/hosts
设置免密登录:ssh-keygen
ssh-copy-id hd-01
2)安装jdk
上传安装包
CRT:alt+p
解压
tar -zxvf .tar.gz
配置环境变量

 
export JAVA_HOME=/root/hd/jdk1.8.0_192
export PATH=$JAVA_HOME/bin:$PATH

注意:需要source /etc/profile

分发jdk
scp jdk hd-02:/root/hd
scp /etc/profile hd-02:/etc/
source /etc/profile

3)安装hadoop

上传安装包
alt + p
解压
tar -zxvf .tar.gz
修改配置文件
core-site.xml

 
<property>
<name>fs.defaultFS</name>
<value>hdfs://hsiehchou121:9000</value>
</property>

hdfs-site.xml

 
<property>
<name>dfs.namenode.name.dir</name>
<value>/root/hd/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/root/hd/dfs/data</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hsiehchou122:50090</value>
</property>

mapred-site.xml

 
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

yarn-site.xml

 
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hsiehchou121</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>

配置环境变量

 
export HADOOP_HOME=/root/hd/hadoop-2.8.4
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

修改slaves文件加入从节点

格式化namenode
hadoop namenode -format
启动:start-all.sh

hadoopMapReduce

官方:Apache™Hadoop®项目开发了用于可靠,可扩展的分布式计算的开源软件

Apache Hadoop软件库是一个框架,允许使用简单的编程模型跨计算机集群分布式处理
大型数据集。它旨在从单个服务器扩展到数千台计算机,每台计算机都提供本地计算和
存储。该库本身不是依靠硬件来提供高可用性,而是设计用于检测和处理应用层的故
障,从而在计算机集群之上提供高可用性服务,每个计算机都可能容易出现故障
阿里的Flink(9000万欧元) Blink

MapReduce分布式计算程序的编程框架。基于hadoop的数据分析的应用

MR优点:
1)框架易于编程
2)可靠容错(集群)
3)可以处理海量数据(1T+ PB+) 1PB = 1024TB
4)拓展性,可以通过动态的增减节点来拓展计算能力

MapReduce的思想

数据:海量单词

hello reba
hello mimi
hello liya
mimi big
需求:对每个单词出现的次数统计出来
思想:分而治之!
解决方式:
1)每个单词记录一次(map阶段)
<hello,1> <reba,1> <hello,1> <mimi,1>
2)相同单词的key不变,value累加求和即可(reduce阶段)
<hello,1+1+1>
对数据进行计算

对wordcount例子程序分析

1)整个wordcount分为几个阶段?

三个
2)有哪几个阶段?
mapper
reducer
driver
3)每个阶段有什么作用
mapper:对数据进行打散<hello,1><mimi,1>
reducer:对数据进行聚合<hello,1+1+1>
driver:提交任务
4)详解

Mapper阶段

将数据转换为String

对数据进行切分处理
把每个单词后加1
输出到reducer阶段

Reducer阶段

根据key进行聚合

输出key出现总的次数

Driver阶段

创建任务

关联使用的Mapper/Reducer类
指定mapper输出数据的kv类型
指定reducer输出的数据的kv类型
指定数据的输入路径与输出路径
提交

hadoop数据类型

我们看到的wordcount程序中的泛型中的数据类型其实是hadoop的序列化的数据类

型。
为什么要进行序列化?用java的类型行不行?(可以)
Java的序列化:Serliazable太重。
hadoop自己开发了一套序列化机制。Writable,精简高效。海量数据。
hadoop序列化类型与Java数据类型

Java数据类型 Hadoop序列化类型
int IntWritable
long LongWritable
boolean BooleanWritable
byte ByteWritable
float FloatWritable
double DoubleWritable
String Text

wordcount测试

1)本地模式

2)集群模式
hadoop jar .jar wordcount /wc/in /wc/out

hadoop jar mapreduce-1.0-SNAPSHOT.jar 全类名 /wc/in /wc/out

转载于:https://www.cnblogs.com/hsiehchou/p/10403445.html

你可能感兴趣的文章
Appium+Robotframework实现Android应用的自动化测试-5:RIDE中AppiumLibrary的配置
查看>>
git 提交代码到开源中国
查看>>
C# 指定平台编译项目
查看>>
「Luogu3355」 骑士共存问题
查看>>
c#后台线程更新界面
查看>>
冒泡排序-----选择排序
查看>>
CRC从原理到实现
查看>>
jquery-json 插件使用方法
查看>>
List集合共性方法
查看>>
javaweb中关于转发与重定向的写法
查看>>
mariadb配置允许远程访问方式
查看>>
创建kafkatopic和productor
查看>>
HTML文档编写规范
查看>>
servlet
查看>>
js生成二维码实例(真实有效)
查看>>
Oracle的rowid结构解析
查看>>
【C# in depth 第三版】温故而知新(2)
查看>>
ImportTsv-HBase数据导入工具
查看>>
Linux中查看日志的常用命令tail、cat、echo、tac、head
查看>>
Python3与OpenCV3.3 图像处理(十六)--图像金字塔
查看>>