目录

第1章 大数据概论

第2章 从Hadoop框架讨论大数据生态

第3章 Hadoop运行环境搭建(开发重点)

第4章 Hadoop运行模式

本地模式:默认配置

伪分布式模式:按照完全分布式模式配置,但是只有一个节点

完全分布式模式(开发重点)

第5章 Hadoop编译源码(面试重点)


第1章 大数据概论

第2章 从Hadoop框架讨论大数据生态

  • 大发行版本:Apache Hadoop、Coudera Hadoop、Hortonworks Hadoop
  • Hadoop组成:MapReduce(计算)、Yarn(资源调度)、HDFS(存储)、Common(辅助工具)
    • 1.x中计算和资源调度都是MapReduce
    • HDFS:NameNode、DataNode、SecondaryNameNode
    • YARN:ResourceManage、NodeManage、ApplicationMaster、Container
    • MapReduce:Map阶段、Reduce阶段
  • 大数据生态体系:
    • 数据来源:数据库(结构化数据)、半结构化数据
    • 数据传输:Sqoop数据传递,Flume日志收集
    • 数据存储:HDFS文件存储,Hbase非关系型数据库
    • 资源管理:Yarn
    • 数据计算:MapReduce离线计算,Spark Core内存计算,(Hive数据查询,Spark R数据分析,Spark Sql数据查询,Spark Stream实时计算,Flink)
    • 任务调度:Oozie任务调度,Azkaban任务调度,ZooKeeper数据平台配置和调度
    • 业务模型:数据可视化、业务应用

第3章 Hadoop运行环境搭建(开发重点)

  • 1,虚拟机环境

    • 准备:vmware,centos7
    • 创建虚拟机,安装centos7
    • 虚拟机克隆,修改IP地址
  • 2,安装JDK,(rpm -qa | grep java查看已安装jdk,yum -y remove java-1.7.0-openjdk*删除已安装的,java -version验证)
  • 3,安装Hadoop
解压到指定目录:
tar -xzvf hadoop-2.7.2.tar.gz -C /opt/module
tar -xzvf jdk-8u241-linux-x64.tar.gz -C /opt/module 配置环境变量 vi /etc/profile.d/env.sh更好一点 远程登录时会加载所有profile.d下的.sh文件
vi /etc/profile
-------------------------------------------
## JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_241
export PATH=$JAVA_HOME/bin:$PATH ## HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH source生效

第4章 Hadoop运行模式

本地模式:默认配置

伪分布式模式:按照完全分布式模式配置,但是只有一个节点

启动HDFS并运行MapReduce程序(本地运行)

  • 配置:hadoop-env.sh,JAVA_HOME修改为绝对路径
  • 配置:core-site.xml,HDFS中namenode地址,Hadoop运行时产生文件的目录
  • 配置:hdfs-site.xml,指定HDFS副本数量
core-cite.xml  # 设置后本地模式不可用,因为namenode地址修改为Hdfs了,默认是file:///

<!-- 指定HDFS 中NameNode 的地址-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost101:9000</value>
</property> <!-- 指定Hadoop 运行时产生文件的存储目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property> hdfs-site.xml <!-- 指定HDFS 副本的数量-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property> <!-- 指定Hadoop 辅助名称节点主机配置-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>localhost104:50090</value>
</property>

注意:hadoop.tmp.dir需要谨慎设置,否则数据迁移比较麻烦

  • 启动集群

    • 格式化NameNode:hdfs namenode -format
    • 启动NameNode:hadoop-daemon.sh start namenode
    • 启动DataNode:hadoop-daemon.sh start datanode
  • 查看集群
    • jps
    • web端查看hdfs:localhost101:50070,(yarn是8088),无法访问参考
    • 查看log日志:/hadoop-2.7.2/logs

注意:为什么不能一直格式化namenode?

格式化NameNode,会产生新的集群id,导致NameNode 和DataNode 的集群id 不一致,集群找不到已往数据。所以,格式NameNode 时,一定要先删除data数据和log 日志,然后再格式化NameNode。(必须先关掉namenode和datanode的进程,否则删掉后又会产生data数据和log日志)

  • 操作集群

    • 执行wordcount,此时是在local运行mapreduce程序
    • hdfs dfs -xxx,(hadoop -dfs已弃用,内部也是转化为hdfs -dfs,hadoop fs更通用,可以处理其他的FS)
    • ls、cat、rm -r、put、get

启动Yarn并运行MapReduce程序(在Yarn上运行)

  • 配置:yarn-env.sh,JAVA_HOME修改为绝对路径
  • 配置:yarn-site.xml,Reducer获取数据的方式,Yarn的ResourceManage的地址
  • 配置:mapred-env.sh,JAVA_HOME修改为绝对路径
  • 配置:mapred-site.xml,指定MR在Yarn上运行
yarn-site.xml

<!-- Reducer 获取数据的方式-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property> <!-- 指定YARN 的ResourceManager 的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost101</value>
</property> mapred-site.xml <!-- 指定MR 运行在YARN 上-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
  • 启动集群

    • 启动前必须保证NameNode和DataNode已经启动
    • 启动ResourceManager:yarn-daemon.sh start resourcemanager
    • 启动NodeManager:hadoop-daemon.sh start nodemanager
  • 查看集群
  • 操作集群
    • 删除output
    • 执行MapReduce程序

配置历史服务器

  • 配置mapred-site.xml
<!-- 历史服务器端地址-->
<property>
<name>mapreduce.jobhistory.address</name>
<value>localhost101:10020</value>
</property>
<!-- 历史服务器web 端地址-->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>localhost101:19888</value>
</property>

配置日志聚集

日志聚集概念:应用运行完成以后,将程序运行日志信息上传到HDFS 系统上。
日志聚集功能好处:可以方便的查看到程序运行详情,方便开发调试。

  • 配置:yarn-site.xml
<!-- 日志聚集功能使能-->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property> <!-- 日志保留时间设置7 天-->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
  • 重启NodeManager 、ResourceManager 和HistoryManager

    • yarn-daemon.sh start resourcemanager
    • yarn-daemon.sh start nodemanager
    • mr-jobhistory-daemon.sh start historyserver
  • 运行MapReduce程序

完全分布式模式(开发重点),配置汇总

虚拟机准备

编写集群分发脚本xsync

  • scp(secure copy), 安全拷贝

    • scp -r src dst,src,dst可以是xxx@xxx:/xxx/xxx,user@localhost101:/xxx
    • 拷贝module目录,/etc/profile环境变量,source生效
    • 注意:dst中如目录是已存在目录则创建目录,名为src中目录;若不存在目录,则将src中目录重命名为dst中目录
  • rsync,远程同步工具
    • rsync -rvl src dst
    • 注意:src中同步目录不加/表示同步文件,会在dst中创建新的目录;若要同步目录则加/
  • xsync,集群分发脚本
    • 修改脚本xsync 具有执行权限:chmod 777 xsync
    • 放在home/xxx/bin目录下,或放在/usr/local/bin下可以直接执行
    • xsync 要同步的文件

#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi #2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname #3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir #4 获取当前用户名称
user=`whoami` #5 循环
for((host=103; host<105; host++)); do
echo ------------------- localhost$host --------------
rsync -rvl $pdir/$fname $user@localhost$host:$pdir
done

集群配置

  • 集群部署规划
JAVA_HOME     localhost102 localhost103 localhost104
hadoop-env.sh

core-site.xml

hdfs-site.xml

HDFS

NameNode

DataNode

DataNode

SecondaryNameNode

DataNode

yarn-env.sh yarn-site.xml Yarn

NodeManager

ResourceManager

NodeManager

NodeManager

mapred-env.sh mapred-site.xml MapReduce   HistoryServer  
  • 配置集群:

    • hadoop-env.sh(JAVA_HOME)
      core-site.xml(NameNode地址,Hadoop运行产生文件存储地址)
      hdfs-site.xml(SecondaryNameNode地址,副本数)
    • yarn-env.sh(JAVA_HOME)
      yarn-site.xml(ResourceManager地址,Reducer获取数据方式)
    • mapred-env.sh
      mapred-site.xml(JobHistory Server地址,MR运行在Yarn上)
    • xsync etc/hadoop 分发脚本

单节点启动

  • 删除所有节点上的data、logs目录,格式化NameNode,hdfs namenode -format
  • 在NameNode节点上启动NameNode、DataNode
  • 在其他节点上启动DataNode

配置SSH免密登录(为了群起集群,使用系统自带的脚本)

  • 用法:ssh 主机IP
  • 原理:主机1生成私钥和公钥,公钥发送给主机2,主机1发送主机2的信息用公钥解密,主机2发送给主机1的信息用私钥解密,主机1就可以在本机上登录主机2与其进行通信
    • 生成公钥和私钥:cd,cd .ssh/,ssh-keygen -t rsa,三次回车生成私钥id_rsa和公钥id_rsa.pub
    • 拷贝公钥到目标主机上:ssh-copy-id localhost102,103,104,自己主机也要拷贝,NameNode要和每一个主机通信
  • 102(运行NameNode)、102root(很多操作需要root用户完成)、103(运行ResourceManager)都需要设置ssh免密登录

群起集群

  • 配置etc/hadoop/slaves,文件中是所有DataNode节点主机,注意:该文件中添加的内容结尾不允许有空格,不允许有空行。
  • 同步所有节点(调用start-dfs.sh的节点配置slaves就可以启动slaves中所有DataNode)
  • 启动集群(注意格式化之前,一定要先停止上次启动的所有namenode 和datanode 进程,然后再删除data 和log 数据)
    • 启动HDFS:start-dfs.sh(任何节点都可以调用,如果没有配置ssh,需要输入节点密码;如果启动节点没有配置slaves,则只会启动本节点;slaves配置在启动节点上就可以)
    • 启动YARN:start-yarn.sh,(必须在Yarn所在的节点上启动,否则ResourceManager不会启动
    • 启动JobHistory Server:mr-jobhistory-daemon.sh start historyserver(必须在historyserver上启动
  • Web端查看NameNode102:50070,SecondaryNameNode104:50090,Yarn103:8088,历史服务器103:19888
  • 基本测试:上传大文件、小文件

集群启动、停止方式总结

  • 各个服务组件单独启动、停止

    • HDFS:hadoop-daemon.sh start / stop  namenode / datanode / secondarynamenode
    • YARN:yarn-daemon.sh start / stop resourcedmanager / nodemanager
    • HistoryServer:mr-jobhistory-daemon.sh start historyserver
  • 各个模块分开启动、停止
    • HDFS:start-dfs.sh / stop-dfs.sh,(在任何一个节点上都可以启动集群,但是必须配置slaves
    • YARN:start-yarn.sh / stop-yarn.sh,(必须在RM上启动,才会启动RM,否则只会启动NodeMananger

集群时间同步

  • crontab定时任务,需要开启crond服务(service crond status 查看状态,service crond start 启动服务)

    • 用法:***** 执行命令;表示:分钟(0-59)、小时(0-23)、天(1-31)、月(1-12)、周(0-7) 
      【*】代表所有可能的值,【,】指定不连续的值,【-】表示整数范围,【/】指定间隔的时间频率
    • crontab -e:编辑定时任务,-l显示当前用户的定时任务,-r删除定时任务
  • 找一个机器,作为时间服务器,所有的机器与这台集群时间进行定时的同步,比如,每隔十分钟,同步一次时间。
  • 时间服务器配置(root用户操作)
    • 检查ntp是否安装:rpm -qa|grep ntp
    • 修改ntp配置文件 /etc/ntp.conf

      1. 授权网段上的所有机器可以从这台机器同步时间:restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap 
      2. 集群在局域网上,不使用互联网上的时间:注释掉所有server 0.xxx
      3. 当该节点丢失,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步,添加两行
      server  127.127.1.0     
      fudge 127.127.1.0 stratum 10

    • 修改/etc/sysconfig/ntpd,让硬件时间与系统时间一起同步,增加:YNC_HWCLOCK=yes
    • 重新启动ntpd 服务:service ntpd status 查看状态,service ntpd start 启动,chkconfig ntpd on 设置开机启动
  • 其他机器配置(root用户操作)
    • 配置每10分钟与时间服务器同步一次,crontab -e:*/10 * * * * /usr/sbin/ntpdate localhost102

第5章 Hadoop编译源码(面试重点)

Hadoop - 入门学习笔记(详细)的更多相关文章

  1. Hadoop入门学习笔记---part3

    2015年元旦,好好学习,天天向上.良好的开端是成功的一半,任何学习都不能中断,只有坚持才会出结果.继续学习Hadoop.冰冻三尺,非一日之寒! 经过Hadoop的伪分布集群环境的搭建,基本对Hado ...

  2. Hadoop入门学习笔记---part2

    在<Hadoop入门学习笔记---part1>中感觉自己虽然总结的比较详细,但是始终感觉有点凌乱.不够系统化,不够简洁.经过自己的推敲和总结,现在在此处概括性的总结一下,认为在准备搭建ha ...

  3. Hadoop入门学习笔记---part4

    紧接着<Hadoop入门学习笔记---part3>中的继续了解如何用java在程序中操作HDFS. 众所周知,对文件的操作无非是创建,查看,下载,删除.下面我们就开始应用java程序进行操 ...

  4. Hadoop入门学习笔记---part1

    随着毕业设计的进行,大学四年正式进入尾声.任你玩四年的大学的最后一次作业最后在激烈的选题中尘埃落定.无论选择了怎样的选题,无论最后的结果是怎样的,对于大学里面的这最后一份作业,也希望自己能够尽心尽力, ...

  5. Hadoop入门学习笔记(一)

    Week2 学习笔记 Hadoop核心组件 Hadoop HDFS(分布式文件存储系统):解决海量数据存储 Hadoop YARN(集群资源管理和任务调度框架):解决资源任务调度 Hadoop Map ...

  6. Hadoop入门学习笔记总结系列文章导航

    一.为何要学习Hadoop? 这是一个信息爆炸的时代.经过数十年的积累,很多企业都聚集了大量的数据.这些数据也是企业的核心财富之一,怎样从累积的数据里寻找价值,变废为宝炼数成金成为当务之急.但数据增长 ...

  7. Hadoop入门学习笔记之一

    http://hadoop.apache.org/docs/r1.2.1/api/index.html 适当的利用 null 在map中可以实现对文件的简单处理,如排序,和分集合输出等. 需要关心的内 ...

  8. Hadoop入门学习笔记(二)

    Yarn学习 YARN简介 YARN是一个通用资源管理系统和调度平台,可为上层应用提供统一的资源管理和调度 YARN功能说明 资源管理系统:集群的硬件资源,和程序运行相关,比如内存.CPU等. 调度平 ...

  9. Hadoop入门学习笔记-第一天 (HDFS:分布式存储系统简单集群)

    准备工作: 1.安装VMware Workstation Pro 2.新建三个虚拟机,安装centOS7.0 版本不限 配置工作: 1.准备三台服务器(nameNode10.dataNode20.da ...

随机推荐

  1. DQL语句总结

    6.DQL语句总结 select ... from ... where ... group by ... having ... order by ... limit .... 执行顺序? 1,from ...

  2. 浅谈kali : arpspoof工具原理

    Arpspoof工具 介绍 arpspoof是一个通过ARP协议伪造数据包实现中间人攻击的kali工具. 中间人攻击虽然古老,但仍处于受到黑客攻击的危险中,可能会严重导致危害服务器和用户.仍然有很多变 ...

  3. 学习JAVAWEB第十四天

    ## JSP:入门学习 1. 概念: * Java Server Pages: java服务器端页面 * 可以理解为:一个特殊的页面,其中既可以指定定义html标签,又可以定义java代码 * 用于简 ...

  4. Filter+Redis解决项目之间调用的幂等性

    幂等(idempotent.idempotence)是一个数学与计算机学概念,常见于抽象代数中. 在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同 在项目远程调用中,如果接 ...

  5. springboot 添加mybatisjar包发生的异常问题?

    一.pro.xml文件中,添加mybatisjar包 <?xml version="1.0" encoding="UTF-8"?> <proj ...

  6. TensorFlow 深度学习中文第二版·翻译完成

    原文:Deep Learning with TensorFlow Second Edition 协议:CC BY-NC-SA 4.0 不要担心自己的形象,只关心如何实现目标.--<原则>, ...

  7. 【源码】Redis exists命令bug分析

    本文基于社区版Redis 4.0.8 1.复现条件 版本:社区版Redis 4.0.10以下版本 使用场景:开启读写分离的主从架构或者集群架构(master只负责写流量,slave负责读流量) 案例: ...

  8. Sublime Text4 安装与配置记录

    Sublime Text作为一款优质的Code编辑器,已更新至第4个版本,本文记录关于Sublime Text 4[版本4126]的安装.汉化,以及常用配置方法. 安装 访问官网下载安装包:https ...

  9. linux centos6.3 升级svn1.6到svn1.8

    linux centos6.3 升级svn1.6 1. 删除svn1.6 #yum remover subverson12.设置svn1.8安装源 vim /etc/yum.repos.d/wandi ...

  10. 社交网络分析的 R 基础:(六)绘图操作

    R 语言强大的可视化功能在科学研究中非常受欢迎,丰富的类库使得 R 语言可以绘制各种各样的图表.当然这些与本章内容毫无关系,因为笔者对绘制图表了解有限,仅限于能用的程度.接下来的内容无需额外安装任何包 ...