《OD学hadoop》第二周0702

时间:2022-12-02 15:56:51

大数据离线计算hadoop2.x

三周(6天)

markdown文本剪辑器

罗振宇--跨年演讲,时间的朋友 http://tech.163.com/16/0101/11/BC87H8DF000915BF.html

勤奋的男人和爱笑的女人运气都不会太差。

1. 什么是Hadoop

2. hadoop生态系统架构功能与原理

3. hadoop核心模块组成

4. hadoop 2.x伪分布式环境搭建与配置、测试

一、前置课程:

Linux:

Java:

应用程开发>系统层开发

数据库:

SQL on Hadoop

hive->sql

spark sql(spark)

http://www.infoq.com/cn/news/2014/06/sql-on-hadoop

二、

cloudera, 简称:CDH版

http://archive.cloudera.com/cdh5/

http://www.aboutyun.com/thread-9219-1-1.html

impala

三、Hadoop版本

2.2.0,2.5.0, 2.7.x

四、大数据特征

1. 大量(海量数据):以PB为临界点,1PB=1024TB

秒级营销

爬虫>网络存储>HDFS

Google三驾马车: GFS,mapreduce,Bigtable

后Hadoop时代的新“三驾马车”——Caffeine、Pregel、Dremel

(1)分》合 map-reduce:分而治之

map:分

reduce:合

(2)HBASE

(3)HDFS 分布式的文件系统

五、Hadoop特性

1、可靠的

2、可拓展的

存储可靠性:

HDFS副本数策略,默认3个。

以块的形式存储,默认块的大小是128MB。

校验码,检测块是否损坏。

计算可靠性:

一个机器损坏并不影响处理数据,因为其他机器也有存储,再开启map即可。

低成本:

运行在普通的廉价的机器上。

六、HDFS分布式文件系统

HADOOP1.X中HDFS工作原理

1、设计理念:一次写入,多次读取

2. 主从架构

  主节点:namenode,存储元数据

  从节点:datanode,存储具体的文件

3. 文件的属性

名称

位置

副本数

权限

存储块

各个块在哪些datanode节点上

......

4. 块block的形式存储

举例:默认块的大小256M

现在有一个文件,大小为500MB

分为链各个存储块,第一个块:256MB,第二个块244MB

5. 文件的属性称为:元数据(命名空间)

6. HDFS读写流程

读取文件:

/user/beifeng/mapreduce/wc.input

写操作流程:

/user/beifeng/mapreduce/wc.input

7. 就近原则

8. 小结

客户端>namenode

客户端>datanode

七、Hadoop YARN框架

1、主从架构

主节点:resourcemanager

从节点:nodemanager

2、YARN如何调度任务

client->job->resourcemanager

wordcount词频统计

Container容器

八、MapReduce

Hadoop学习笔记:MapReduce框架详解

(1)map ->reduce

过程中有一个阶段:shuffle(洗牌,打乱)

Map阶段并行处理输入数据

Reduce阶段对Map结果进行汇总

(2)Shuffle连接Map和Reduce两个阶段

Map Task将数据写到本地磁盘

Reduce Task从每个Map Task上读取一份数据

(3)仅适合离线批处理

具有很好的容错性和拓展性

适合批处理

(4)缺点明显

启动开销大,过多使用磁盘导致效率低下

由于MR磁盘IO消耗较大,就诞生了spark

spark:从磁盘读,将数据写到内存中

九、环境搭建

1.

vi /etc/sysconfig/selinux

#SELINUX=disabled

2. 加sudo权限

vi /etc/sudoers

beifeng ALL=(root)NOPASSWD:ALL

3. 关闭防火墙

chkconfig iptables off

service iptables status

4. 安装jdk

chown beifeng:beifeng /opt/*

export JAVA_HOME=

export PATH=$PATH:$JAVA_HOME/bin

su -root

souce /etc/profile

十、安装hadoop

安装hadoop

tar -zxvf haddop***.gc -C /opt/modules

df -h

删除无用的文档

cd share/

rm -rf ./doc/

http://hadoop.apache.org/docs/r2.5.2/

http://hadoop.apache.org/docs/r2.5.2/hadoop-project-dist/hadoop-common/SingleCluster.html

1. hadoop 模式

(1)本地模式

本地模式下使用的是本地文件系统,仅运行于本机

(2)伪分布式模式

一个节点,使用的是分布式文件系统

(3)分布式模式

hadoop守护进程运行部署在一个集群

2.

native 本地库  /opt/modules/hadoop-2.5.0/lib

脚本 /opt/modules/hadoop-2.5.0/sbin

配置文件 /opt/modules/hadoop-2.5.0/etc

3. 伪分布式配置

(1)配置hadoop-env.sh, yarn-env.sh,mapred-env.sh

修改JAVA_HOME=/opt/modules/jdk1.7.0_67

bin/hadoop查看

(2)

etc/hadoop/core-site.xml:

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

core-site.xml:

hadoop/tmp.dir

/opt/modules/hadoop-2.5.0/data/tmp

配置slaves

指定节点所在的位置

beifeng-hadoop-01

配置hdfs-site.xml,数据副本数,副本数等于所有datanode的总和

<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>

(3)Format the filesystem:

  $ bin/hdfs namenode -format

sbin/hdfs/hadoop-daemon.sh start namenode
sbin/hdfs/hadoop-daemon.sh start datanode

(4)hdfs文件管理页面
hostname:50070

hostname:50070/explorer.html

HDFS用户主目录
创建目录 bin/hdfs dfs -mkdir -p /user/beifeng

上传 bin/hdfs dfs -mkdir -put etc/hadoop/core-site /user/beifeng
  读取 bin/hdfs dfs -mkdir -cat /user/beifeng/core-site.xml

 查看hdfs常用命令和选项的使用: bin/hdfs hdf
 
(5)yarn配置

etc/hadoop/yarn-site.xml:

<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration> 指定mapreduce使用yarn

etc/hadoop/mapred-site.xml:

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

指定resourcemanager主节点所在位置

yarn.resourcemanager.hostname=beifeng-hadoop-01

启动:

sbin/yarn-daemons.sh start resoucemanager

sbin/yarn-daemons.sh start nodemanager

jps

(6)wordcount

bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar wordcount

mapreduce输出目录不能存在

查看结果

bin/hdfs dfs -text /user/***/r-r-00000

(6)

logs目录存放日志文件

(7)hdfs-site.xml

设置hdfs用户权限不检测

dfs.permissions.enabled = false

(8)历史服务器

查看已经运行的mapreduce作业记录

sbin/mr-jobhistory-daemon.sh start historyserver

外部访问端口  host:19888

日志聚集功能配置:

直接查看HDFS上的数据,mapreduce运行时产生的日志

yarn-site.xml

是否启用日志聚集功能   yarn.log-aggregation-enable=true

日志保留时间  yarn.log-aggregation.retain-seconds=12324(秒)

(9)

WARN util.NativeCodeLoader 解决方法

bin/hadoop version

十一、 编译Hadoop源码

64位centos 下编译 hadoop 2.6.0 源码

1、必须在Linux上编译

2、编译使用的JDK必须是1.6以上

3、编译使用的maven版本必须是3.0以上

4、需要安装一些工具

Findbugs

CMake

5、重点:必须连接互联网

编译前测试下能否ping通外网

(1)配置jdk

(2)配置Maven

export MAVEN_HOME=/opt/modules/apache-maven-3.0.5

exprort PATH=$PATH:$MAVEN_HOME/bin

source /etc/profile

mvn -version

(3)安装gcc

su -root

yum -y install gcc gcc-c++

(4)安装protocol buffer