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