java自学网VIP

Java自学网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2786|回复: 0

《深入解析YARN架构设计与实现原理》第1章 环境准备【1.5】

[复制链接]
  • TA的每日心情
    开心
    2021-5-25 00:00
  • 签到天数: 1917 天

    [LV.Master]出神入化

    2096

    主题

    3754

    帖子

    6万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    66788

    宣传达人突出贡献优秀版主荣誉管理论坛元老

    发表于 2017-4-12 20:39:03 | 显示全部楼层 |阅读模式
    1.5 Hadoop初体验, S! T1 i/ W9 P8 |
    一般而言, 我们想要深入学习一个新的系统时, 首先要尝试使用该系统, 了解系统对外提供的功能, 然后再通过某个功能逐步深4 E7 e# K9 L  t$ L
    入其实现细节。 本节将介绍如何在 伪分布式工作模式
    [4] 下使用Hadoop, 包括搭建Hadoop环境、 访问HDFS以及向YARN提交应用程序* G. m7 A( r# V; t7 S% ?: W% J
    等最基本的操作。 本节只是有代表性地介绍
    Hadoop的一些基本使用方法, 使读者对Hadoop有一个初步认识, 并引导读者逐步进行更全
    3 Q# k% u$ N3 i, F% V面的学习。
    * o# f; y* {% q+ i! m& q
    1.5.1 搭建Hadoop环境
    1 j8 V# h: b9 N
    本小节仅介绍单机环境的搭建方法, 更加完整的Hadoop安装步骤和配置方法可参考本书最后的附录A和附录B。 另外, 需要注意* q) V& \4 l  a& _! f' \4 l
    的是, 由于不同用户拥有的
    Linux环境不尽相同( 比如已经安装的软件不同、 统一软件的版本不同等) , 每个人安装Hadoop过程中遇到
    3 U3 d0 p0 P  }的问题可能不同, 此时需要根据具体的日志提示解决问题。 本小节仅给出一般情况下,
    Hadoop 2.0的安装步骤。* Z( m8 F7 E8 y% K4 c
    步骤
    1 修改Hadoop配置文件。
    1 R4 V5 i) l9 c1 B
    1) 设置环境变量。 在${HADOOP_HOME}/etc/hadoop/hadoop-env.sh中, 添加JAVA安装目录, 命令如下:
    $ l% e: n# J" Q, w
    export JAVA_HOME=/usrb/jvm/java-6-openjdk
    0 l8 m) d) `* ]4 K( S修改conf目录下的mapred-site.xmlcore-site.xmlyarn-site.xmlhdfs-site.xml四个文件, 在<configuration></configuration>之间添加的内8 v* I: \  y% L
    容见下面的介绍。
    / u8 j1 ^0 K  w7 Z" U( w& Y
    2) 在${HADOOP_HOME}/etc/hadoop/下, 将mapred-site.xml.templat重命名成mapred-site.xml, 并添加以下内容:
    % I6 I" i0 a& N4 ]8 u/ y2 N' ~" |
    <property>
    6 G& ~8 H! K, u& {8 v$ ?<name>mapreduce.framework.name</name>
    ; M; u; G6 I5 v. T# O$ I<value>yarn</value>3 x4 c, {- l1 s3 q4 Q; C' O
    </property>1 z: [& {3 O) w! y2 P# w
    【 解释】 相比于Hadoop1.0, 用户无须再配置mapred.job.tracker, 这是因为JobTracker相关实现已变成客户端的一个库( 实际上在
    $ I4 T: ~, f  d& L9 c- K
    Hadoop 2.0中, JobTracker已经不存在, 它的功能由另外一个称为MRAppMaster的组件实现) , 它可能被随机调度到任何一个slave上," @4 D( G, s0 Y$ d# `! n5 I. e
    也就是它的位置是动态生成的。 需要注意的是, 在该配置文件中需用
    mapreduce.framework.name指定采用的运行时框架的名称, 在此指
    1 {$ I% F: B( P% O- b" s. ~
    "yarn"
    6 P  B8 c; Y& o6 h3 M
    3) 在${HADOOP_HOME}/etc/hadoop/中, 修改core-site.xml, 为了简单, 我们仍采用Hadoop 1.0中的HDFS工作模式( 不配置HDFS; X2 {2 C+ i+ @( K7 X
    Federation
    ) , 修改后如下:
    $ l# K" ?1 a0 q+ l2 R; B
    <property>  |. z. d/ }( H" o& A# e
    <name>fs.default.name</name>( T8 F4 O2 d' |% F4 C% c
    <value>hdfs://YARN001:8020</value>
    ) e" f/ _+ D; F* A  O) D</property>
      s" i! |+ Y0 q' D( O其中, YARN001表示节点的IP或者host
    ( i( B) v  ?+ F/ u% o
    4) 在${HADOOP_HOME}/etc/hadoop/中, 修改yarn-site.xml, 修改后如下:
    0 `; U, Q) E. r% o+ j: Y- i
    <property>
    # b0 U; u# c' E5 u) I* d; T% p<name>yarn.nodemanager.aux-services</name>
    3 u! c  h7 c' D8 |# d<value>mapreduce-shuffle</value>
    ; `0 ^5 I3 b; l! i) x' z</property>
    , a5 r2 X  Z3 D5 w# I, v) Q+ Q% ^【 解释】 为了能够运行MapReduce程序, 需要让各个NodeManager在启动时加载shuffle servershuffle server实际上是Jetty/Netty6 j2 x, O4 k, S, o3 e6 {) `
    Server
    Reduce Task通过该server从各个NodeManager上远程复制Map Task产生的中间结果。 上面增加的两个配置均用于指定shuffle8 B$ [$ \$ U. y6 k
    server
    * a* X7 s# ~3 I  f3 ^3 @
    5) 修改${HADCOP_HOME}/etc/hadoop中的hdfs-site.xml文件:- h3 H$ c" H7 w" x( u
    <property>, X0 U( N' g: A5 C. V9 g# J! M
    <name>dfs.replication</name>: Y- w" {  O7 W. [0 F% I. d
    <value>1</value>
    ' K1 B& g  }, Q# V/ q4 p7 g</property>! n" L1 {& r2 X+ D) g- {
    【解释】 默认情况下, HDFS数据块副本数是3, 而在集群规模小于3的集群中该参数会导致出现错误, 这可通过将dfs.replication
    # {  o, |, `: {整为
    1解决。
    1 _! S$ V  r0 C2 n7 D5 X
    注意 如果你是在虚拟机中搭建Hadoop环境, 且虚拟机经常关闭与重启, 为了避免每次重新虚拟机后启动Hadoop时出现各种问
    * Q/ J0 V+ H- q题, 建议在
    core-site.xml中将hadoop.tmp.dir属性设置为一个非/tmp目录, 比如/data或者/home/dongxicheng/data( 注意该目录对当前用户需具
    2 \4 U. T6 Y+ l. M有读写权限) 。6 Y! K: V- K  }  L9 x; x4 L
    步骤
    2 设置免密码登录。
    / O+ P+ o% a' m- O* |2 N前面提到
    Hadoop启动/停止脚本需要通过SSH发送命令启动相关守护进程, 为了避免每次启动/停止Hadoop都要输入密码进行验9 J& H5 W) x: C' N3 O3 r+ I- l! d
    证, 需设置免密码登录, 步骤如下。" N, U: t' \  P8 ^
    1) 打开命令行终端, 输入以下命令:
    ( r" X- u5 @) h9 L" @  p
    ssh-keygen -t rsa
    : w7 J, h  t! Q1 e# G; F. S将会在"~/.ssh/"目录下生成公钥文件id_rsa.pub和私钥文件id_rsa
    3 ~, ^7 {3 W% {: i) @( L
    2) 将公钥文件id_rsa.pub中的内容复制到相同目录下的authorized_keys文件中:
    % ^# Y2 m- x9 N6 a" m( \! k+ r" N, e6 ^
    cd ~/.ssh/+ n+ y0 _* c, U+ J
    cat id_rsa.pub >> authorized_keys; M2 H" d# }( N' t' F
    步骤3 启动Hadoop
    ; h& l# J( H0 F# D) X) c7 x8 X
    Hadoop安装目录中, 按以下三步操作启动Hadoop, 我们单步启动每一个服务, 以便于排查错误, 如果某一个服务没有启动成
    0 r' u% K4 }* p' h! {功, 可查看对应的日志查看启动失败原因。
    : F+ j% w* \2 c, f2 u* P# X( ]
    1) 格式化HDFS, 命令如下:
      F, `' F; ~) `
    bin/hadoop namenode -format
    8 Z- P  p6 R  ?  T' f3 T9 t+ C2) 启动HDFS。 你可以使用以下命令分别启动NameNodeDataNode
    : A( V: W; }- x- j+ M3 X1 x2 U
    sbin/hadoop-daemon.sh start namenode
    , I' r; C6 l5 n6 J3 Wsbin/hadoop-daemon.sh start datanode
    5 s' |+ r0 R6 B' w4 R如果有多个DataNode, 可使用hadoop-daemons.sh启动所有DataNode, 具体命令如下:" _3 }% y- O5 |# p& d" V# L9 q
    sbin/hadoop-daemons.sh start datanode" V; }8 k9 X6 R9 E  r$ a
    你也可以使用以下命令一次性启动NameNode和所有DataNode& i: N6 x/ v# J
    sbin/ start-dfs.sh1 @+ J; S  f$ s1 l/ b6 F. S
    3) 启动YARN。 你可以使用以下命令分别启动ResourceManagerNodeManager
    ' B% r0 ?# c. {  X( Q4 Q6 f
    sbin/hadoop-daemon.sh start namenode$ s: g2 [1 u; O- j" ]
    sbin/hadoop-daemon.sh start datanode
    9 N: W% ?, P) r( c, H& ], c* m1 e! D( C4 z# v如果有多个NodeManager, 可使用yarn-daemon.sh启动所有NodeManager, 具体命令如下:0 `# q) s* x: T) w
    sbin/yarn-daemon.sh start nodemanager: A$ J- V9 [: A5 h# y
    你也可以使用以下命令一次性启动ResourceManager和所有NodeManager
      b  B: G( F+ m6 j! R2 M. r6 l
    sbin/start-yarn.sh9 a' [3 h! L# R# [0 y3 Q, F
    通过如下jps命令查看是否启动成功:& L. B) w9 j0 q# l
    dong@YARN001:/opt/hadoop/hadoop-2.0$ jps+ l  v  B  A) U! Z/ K0 I
    27577 NameNode
    2 Z' b) q7 {# C2 R5 Z8 q2 z2 C3 s30315 ResourceManager
    : \9 D8 b2 X/ g* B& P2 {27924 SecondaryNameNode8 h! m" @% O7 n  y# c' `
    16803 NodeManager% |1 @6 C' U7 |( |# J6 g: J3 [
    通过以下URL可查看YARN是否启动成功:( ?. C- ^1 i. C) `9 s! G- j% b
    http://YARN001:8080/
    ' I, T+ }5 ]8 o* C  T5 ?3 h% LYARN对外提供的Web运行界面如图1-10所示。, \, U( g* n0 G. c% |& ]* }
    1-10 YARN对外提供的Web界面5 n  p' O9 k1 k
    如果安装过程中出现问题, 可通过查看日志发现问题所在。
    Hadoop日志存放在$HADOOP_HOME/logs目录下的以".log"结尾的文件4 ?5 e: P' o( S6 T; `# \- B8 u
    中, 比如
    yarn-dongxicheng-resourcemanager-yarn001.log就是ResourceManager产生的日志。
      a. _2 C2 A- G9 k+ t  [6 R6 @经过以上三步操作,
    Hadoop成功启动后, 接下来可以通过Hadoop Shell或者Eclipse插件访问HDFS和提交MapReduce作业。 下面两小$ u! @  T( u" }. w/ @% J5 l
    节分别介绍
    Hadoop ShellEclipse插件使用方法。
    & E7 Z3 C9 N0 F$ V. f& t
    1.5.2 Hadoop Shell介绍+ i3 j# c. _( E2 A# q$ m6 f
    1.4节我们曾提到, bin目录下是最基础的集群管理脚本, 用户可以通过该脚本完成各种功能, 如HDFS文件管理、 MapReduce0 o8 Q+ e, }( _! T% I- _
    业管理等, 更加详细的脚本使用说明, 可参考附录
    C' ~) m7 W# K& I- R
    作为入门, 本节介绍的是
    bin目录下Hadoop脚本的使用方法。 如果你已经对Hadoop 1.0有所了解( 比如尝试安装和使用过Hadoop
    + M0 X3 H/ ]$ X1 H1.0
    ) , 那么可直接使用该脚本, 因为该脚本的功能与Hadoop 1.0对应的Hadoop脚本功能完全一致。% [+ ]7 M8 ~* S  H* u$ @
    该脚本的使用方法为:
    ' N7 h! w. g8 N3 E  a0 {1 w) C
    hadoop [--config confdir] COMMAND, @/ x) `9 r# C: X  D7 J* M
    其中, --config用于设置Hadoop配置文件目录。 默认目录为${HADOOP_HOME}/conf。 而COMMAND是具体的某个命令, 常用的
    0 C  e% y- {. d  l4 [. t6 @" E
    HDFS管理命令fs、 作业管理命令job和作业提交命令jar等, 它们的使用方法如下。" d" w. D2 b6 B
    1HDFS管理命令fs和作业管理命令job' ?8 `* x6 k' u- }7 L. Y9 a
    它们的用法一样, 均为:7 k* Z" \- c4 Y8 o8 c
    bin/hadoop command [genericOptions] [commandOptions]
    / K+ N" w, y& `3 @其中, command可以是fs或者jobgenericOptions是一些通用选项, commandOptionsfs或者job附加的命令选项, 看下面两个例子。3 o* M* [" }( P
    &#10065;HDFS上创建一个目录/test, 命令如下:
    % f. e- |; o9 y" F2 P$ b- z+ G, ?3 v
    bin/hadoop fs -mkdir /test
    $ w2 F- ?8 C- o; }) J4 V&#10065;显示所有Hadoop上正在运行的作业, 命令如下:
    * {+ c5 i. v- a' A
    bin/hadoop job -list; }) u1 {& V% B
    2) 作业提交命令jar
    / B4 p  n' {$ b; h; o
    这个命令的用法是:
    / i# T( g+ p8 r# _
    hadoop jar <jar> [mainClass] args..6 c; T. p& J$ j6 O/ `9 \# I
    其中, <jar>表示JAR包名, mainClass表示main class名称, 可以不必输入而由jar命令自动搜索, argsmain class输入参数。 举例如
    1 C' z7 t7 |- j3 h8 |9 s下:* ]5 \1 @) q7 c- t; @
    bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar pi 5 10
    / j$ T/ n  v' Q3 ~7 f其中pihadoop-mapreduce-examples-*.jar 中一个作业名称, 该作业主要功能是采用拟蒙特卡罗法估算圆周率pi3.1415926…) 的大( b8 j* s$ N1 \8 A/ x
    小, 它有两个整型输入参数:
    Map Task数目和样本数目。
    ) I3 L& E) a& B2 X其他更多命令, 读者可自行查阅
    Hadoop官方设计文档。4 [( I7 O2 c9 \2 Q
    [4] 单机环境中, Hadoop有两种工作模式: 本地模式和伪分布式模式。 其中, 本地模式完全运行在本地, 不会加载任何Hadoop服务,: d7 o% L! m/ T# a9 }$ B; Q
    因而不会涉及
    Hadoop最核心的代码实现, 伪分布式即为单点集群, 在该模式下, 所有的守护进行均会运行在单个节点上, 因而本节
    - U# f+ T, t5 d7 p7 Y选用该工作模式。
      $ `8 {0 M( H/ k; k& j
    2 Z/ k+ s/ \7 s3 x6 q

    8 A) E2 ?- q4 Y+ L
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|Java自学网

    GMT+8, 2025-4-1 14:02 , Processed in 0.205446 second(s), 33 queries .

    Powered by Javazx

    Copyright © 2012-2022, Javazx Cloud.

    快速回复 返回顶部 返回列表