大数据基础之HDFS3


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工作机制

1)加载编辑日志与镜像文件到内存(NameNode)
edits_0001
edits_0002
fsimage fsimage fsimage

2)户端发起命令(client)
hdfs dfs -ls /

3)动正在写的edits(NameNode)

4)录操作日志更新 滚动日志(NameNode)

5)贝到Secondary NameNode
NameNode请求是否需要checkpoint

Secondary NameNode 触发checkpoint条件:
1)定时的时间
Secondary NameNode询问NameNode是否需要checkpoint
直接带回NameNode是否检查结果

2)edits中数据已满
Secondary NameNode请求执行checkpoint

3)NameNode滚动正在写的edits日志

4)将滚动前的编辑日志和镜像文件拷贝到Secondary NameNode

5)Secondary NameNode加载编辑日志和镜像文件到内存,并行合并

6)生成新的镜像文件fsimage.checkpoint

7)拷贝fsimage.chkpoint到NameNode

8)NameNode对fsimage.checkpoint重命名成fsimage

5、hadoop2.8.4安装部署

1)准备工作
设置主机名:vi /etc/hostname
注意:需要重启 reboot
设置映射:vi /etc/hosts
设置免密登录:ssh-keygen
ssh-copy-id hsiehchou121

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 hsiehchou122:/root/hd
scp /etc/profile hsiehchou122:/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>

6、配置环境变量

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

7、hadoopMapReduce

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

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

8、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>
对数据进行计算

9、对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类型
指定数据的输入路径与输出路径
提交

10、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

11、wordcount测试

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

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


文章作者: 谢舟
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 谢舟 !
 上一篇
大数据之MapReduce小实战 大数据之MapReduce小实战
手写wordcount的程序1、pom.xml <dependencies> <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-hd
下一篇 
大数据基础之HDFS2 大数据基础之HDFS2
1、HDFS下载文件原理1、请求2、创建clientDFS –>DFSClient3、建立RPC通信4、得到代理对象proxy,通过代理对象请求得到文件元信息5、查找元信息6、返回元信息7、创建输入流8、下载数据块FSDataInpu
2019-02-09
  目录