大数据离线计算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分布式文件系统
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
(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
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源码
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