初识Hadoop2.x

2020-08-13  本文已影响0人  谭英智

Hadoop是一个能够对大量数据进行分布式处理的软件框架

hadoop-overview

术语

HDFS: 分布式文件系统,解决海量数据存储

YARN: 作业调度和集群资源管理的框架,解决资源任务调度

MAPREDUCE: 分布式运算编程框架,解决海量数据计算

特点

高扩展性: 集群可以容易的扩展到数以千计的节点

成本低:通过大量廉价的机器组成集群

高效率:并发数据,并发处理

高可靠:多份复制,任务失败后自动重新部署计算任务

进程

HDFS

DataNode

SecondaryNameNode

NameNode

YARN

NodeManager

ResourceManager

配置

hadoop-env.sh

export JAVA_HOME=/root/apps/jdk1.8.0_65

core-site.xml

#可以选择tfs/file/gfs文件系统
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://node-1:9000</value>
</property>
#运行时产生文件的存储目录
<property>
    <name>hadoop.tmp.dir</name>
    <value>/home/hadoop/tmp</value>
</property>

hdfs-site.xml

<property>
    <name>dfs.replication</name>
    <value>2</value>
</property>
<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>node-2:50090</value>
</property>

mapred-site.xml

#指定mr运行框架,默认local
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>

yarn-site.xml

<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>node-1</value>
</property>
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>

slaves

node-1
node-2
node-3

添加hadoop到环境变量

scp所有配置文件到所有node

格式化namenode

#只能初始化一次,格式化是生成一些文件,在文件内有集群的唯一id,多次初始化会令id发生变化,导致整个集群不可用
hdfs namenode -format
or hadoop namenode -format

启动

hadoop-daemon.sh start namenode
hadoop-daemon.sh start datanode
hadoop-daemon.sh start resourcemanager
hadoop-daemon.sh start nodemanager

或者

#配置了slaves和ssh免密登录
start-dfs.sh
start-yarn.sh
start-all.sh

停止

stop-dfs.sh
stop-yarn.sh
stop-all.sh

集群UI

nameNode: http://nn_host:port 默认50070

ResourceManager http://rm_host:port 默认8088

操作hdfs

hdfs dfs -ls /
hdfs dfs -mkdir /hello
hdfs dfs -put filename /hello

运行mapreduce程序

hadoop jar sample.jar <arg>

HDFS

设计目标

特性

HA

hdfs-nnha

shell

hadoop fs <args>
hadoop fs -ls hdfs://namenode:host/dir/file
hadoop fs -ls /dir/file
#本地
hadoop fs -ls file:///root/
hadoop fs -ls [-h] [-R] <args>
hadoop fs -mkdir [-p] <paths>
hadoop fs -put [-f] [-p] <localfile> <dst>
hadoop fs -get [ignorecrc] [-crc] [-p] [-f] <src> <localdst>
hadoop fs -appendToFile <localfile> <dst>
hadoop fs -cat [-ignoreCrc] URI
hadoop fs -tail [-f] URI
hadoop fs -chgrp [-R] GROUP URI
hadoop fs -chmod 777 URI
hadoop fs -chown user:grp URI
hadoop fs -cp URI URIDst
hadoop fs -mv URISrc URIDst
hadoop fs -getmerge URI/* localfile
hadoop fs -rm -r URI
hadoop fs -df -h URI
hadoop fs -du  URI
hadoop fs -setrep -w num -R URI

NameNode

hadoop-namenode

DataNode

工作机制

hadoop-work

Java API

YARN

yarn-overview

异常

yarn-rmha

MapReduce

核心思想:分而治之。把巨型任务切割成小任务,任务之间没有依赖关系,并对小文件进行分布式并行计算;再把小任务的结果进行汇总计算,并最终得出结果,根据块的多少来决定Map的数量,根据程序指定的数量来决定reduce的数量,多于一个reduce程序,会把结果切割成多个结果文件;多于一个reduce程序,map输出将根据key的hash,进行分区处理,先分区保存在本地,再发送给reduce,reduce收集完后,进行汇总并排序并进行处理

hadoop-MR
序列化和反序列化

如果使用自定义类型,则需要实现hadoop提供的序列化和反序列接口,因为java的序列化效率低下

上一篇 下一篇

猜你喜欢

热点阅读