java自学网VIP

Java自学网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2654|回复: 0

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

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

    [LV.Master]出神入化

    2025

    主题

    3683

    帖子

    6万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    66353

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

    发表于 2017-4-12 20:39:03 | 显示全部楼层 |阅读模式
    1.5 Hadoop初体验
    8 A9 d+ [4 @3 M( r2 C一般而言, 我们想要深入学习一个新的系统时, 首先要尝试使用该系统, 了解系统对外提供的功能, 然后再通过某个功能逐步深
    / Y2 _0 S* H$ \2 G$ A入其实现细节。 本节将介绍如何在 伪分布式工作模式
    [4] 下使用Hadoop, 包括搭建Hadoop环境、 访问HDFS以及向YARN提交应用程序
    1 A4 f0 W! n7 e4 G1 w等最基本的操作。 本节只是有代表性地介绍
    Hadoop的一些基本使用方法, 使读者对Hadoop有一个初步认识, 并引导读者逐步进行更全
    9 |) l0 ]* |: E* G6 }& ]  l面的学习。# ?: X9 o0 M1 A6 F+ e+ j
    1.5.1 搭建Hadoop环境
    4 g. ~# N2 m$ g+ U, O, G5 o
    本小节仅介绍单机环境的搭建方法, 更加完整的Hadoop安装步骤和配置方法可参考本书最后的附录A和附录B。 另外, 需要注意# x# {) L5 O' M! ^" O
    的是, 由于不同用户拥有的
    Linux环境不尽相同( 比如已经安装的软件不同、 统一软件的版本不同等) , 每个人安装Hadoop过程中遇到% z. s( y- L. M; U/ D
    的问题可能不同, 此时需要根据具体的日志提示解决问题。 本小节仅给出一般情况下,
    Hadoop 2.0的安装步骤。
    8 Z3 M0 g% u6 V+ K1 k7 ], R步骤
    1 修改Hadoop配置文件。% Z! Q' U  t7 N& [7 d  A2 e7 R
    1) 设置环境变量。 在${HADOOP_HOME}/etc/hadoop/hadoop-env.sh中, 添加JAVA安装目录, 命令如下:. G4 i2 d4 `" y1 ]4 S7 D
    export JAVA_HOME=/usrb/jvm/java-6-openjdk
    : a. m+ S8 a6 x5 E修改conf目录下的mapred-site.xmlcore-site.xmlyarn-site.xmlhdfs-site.xml四个文件, 在<configuration></configuration>之间添加的内3 N8 Y$ Y) a- s  M) F% J  {
    容见下面的介绍。
    " [1 L0 f, M% b8 z9 I/ m5 }
    2) 在${HADOOP_HOME}/etc/hadoop/下, 将mapred-site.xml.templat重命名成mapred-site.xml, 并添加以下内容:
    % U! S" a( S5 [) m
    <property>
    ) K; H1 E! Q/ R$ J+ C1 @<name>mapreduce.framework.name</name>
    / s% v+ U5 I% Z6 _! q" b+ q<value>yarn</value>
    . Y8 I! {2 @" N! A. K1 p</property>
    ) T$ c! k4 Q1 d, s【 解释】 相比于Hadoop1.0, 用户无须再配置mapred.job.tracker, 这是因为JobTracker相关实现已变成客户端的一个库( 实际上在
    - T8 b( J0 ~2 a4 G8 X+ l) m
    Hadoop 2.0中, JobTracker已经不存在, 它的功能由另外一个称为MRAppMaster的组件实现) , 它可能被随机调度到任何一个slave上,! t% U5 o. T: t) S( c/ t2 I
    也就是它的位置是动态生成的。 需要注意的是, 在该配置文件中需用
    mapreduce.framework.name指定采用的运行时框架的名称, 在此指( t  }; z% d+ t: G
    "yarn"5 A# a2 v, D0 m) J" B
    3) 在${HADOOP_HOME}/etc/hadoop/中, 修改core-site.xml, 为了简单, 我们仍采用Hadoop 1.0中的HDFS工作模式( 不配置HDFS8 l/ o3 H6 Z( e- ?8 n# X
    Federation
    ) , 修改后如下:
    ! o3 ^& `/ F2 W* O5 E4 q  h, A2 S  g
    <property>
    + L- i$ y  ~" Y% D/ z) V<name>fs.default.name</name>
    . c, L" p; ^2 v. I$ N. X6 p' |. K<value>hdfs://YARN001:8020</value>
    % ~$ b5 t/ b* Z# M, t, I8 f</property># ^. N6 g* [4 i. }  K$ Z
    其中, YARN001表示节点的IP或者host
    / e7 S& t  V) g
    4) 在${HADOOP_HOME}/etc/hadoop/中, 修改yarn-site.xml, 修改后如下:8 _  M0 m) J: \
    <property>
    : s1 p1 t8 ~+ x<name>yarn.nodemanager.aux-services</name>" A" O7 a" c; f
    <value>mapreduce-shuffle</value>& |* q& T& j$ b" d5 ?0 O2 M, a
    </property>+ p" H4 i) }4 G9 c: L
    【 解释】 为了能够运行MapReduce程序, 需要让各个NodeManager在启动时加载shuffle servershuffle server实际上是Jetty/Netty
    / ~  ~/ Z+ Q+ n0 K6 h  H- L7 B# Q1 |Server
    Reduce Task通过该server从各个NodeManager上远程复制Map Task产生的中间结果。 上面增加的两个配置均用于指定shuffle
    . V9 r& k6 ]3 Y% ~  pserver

    8 x' n: X* E& v
    5) 修改${HADCOP_HOME}/etc/hadoop中的hdfs-site.xml文件:4 s" V1 p  J6 L2 W% {
    <property>
    4 B& I) U5 K: ]+ _<name>dfs.replication</name>( P2 G& P6 j, K7 _+ E
    <value>1</value>: b7 Q( E" R; H) G- x- q
    </property>$ p+ D# y8 @  c. a' @  B3 a" k" N
    【解释】 默认情况下, HDFS数据块副本数是3, 而在集群规模小于3的集群中该参数会导致出现错误, 这可通过将dfs.replication+ K0 H. s; F# d- d
    整为
    1解决。9 v& J( j( l5 S( M$ I
    注意 如果你是在虚拟机中搭建Hadoop环境, 且虚拟机经常关闭与重启, 为了避免每次重新虚拟机后启动Hadoop时出现各种问
    5 }$ b. o& k( H# y' n题, 建议在
    core-site.xml中将hadoop.tmp.dir属性设置为一个非/tmp目录, 比如/data或者/home/dongxicheng/data( 注意该目录对当前用户需具
    ( t% @. G1 E  x有读写权限) 。
    " X- P: v; i4 U" u步骤
    2 设置免密码登录。
    $ D+ U* ^- ^4 u! q, W前面提到
    Hadoop启动/停止脚本需要通过SSH发送命令启动相关守护进程, 为了避免每次启动/停止Hadoop都要输入密码进行验( d" i9 U9 ]3 y4 G+ `" Y. V$ X
    证, 需设置免密码登录, 步骤如下。
    8 m7 ]! i* P% O4 u$ G, X
    1) 打开命令行终端, 输入以下命令:
    - l' L" z8 B7 h7 ?3 `/ v
    ssh-keygen -t rsa/ H- X5 X: y* L7 f( R
    将会在"~/.ssh/"目录下生成公钥文件id_rsa.pub和私钥文件id_rsa0 `! Y& b+ A4 |) v
    2) 将公钥文件id_rsa.pub中的内容复制到相同目录下的authorized_keys文件中:
    3 u- J$ ^1 G: F8 m/ G
    cd ~/.ssh/. h1 Y5 G; Y/ J% F  J% F+ j* I
    cat id_rsa.pub >> authorized_keys
    / O3 F  k8 u8 \7 a3 R9 f( B步骤3 启动Hadoop
    4 }7 T5 l' q! Z# ~; j( L  e) S" M
    Hadoop安装目录中, 按以下三步操作启动Hadoop, 我们单步启动每一个服务, 以便于排查错误, 如果某一个服务没有启动成
    7 n3 `/ L# N# N  L+ J* ^8 z4 i功, 可查看对应的日志查看启动失败原因。
    ; \+ P1 X& w! ^% u" i# A: D  Z9 u* o
    1) 格式化HDFS, 命令如下:" y; c) P; G( N" l# }# _, {
    bin/hadoop namenode -format  }' C' J# q3 G- K+ J
    2) 启动HDFS。 你可以使用以下命令分别启动NameNodeDataNode' E6 j7 `6 f2 K" A, C+ E
    sbin/hadoop-daemon.sh start namenode$ w; V$ S! F# `+ j  w  u- x; D. t: j
    sbin/hadoop-daemon.sh start datanode
    + U1 B/ `' l) c+ Z( U. Q; b" q* w如果有多个DataNode, 可使用hadoop-daemons.sh启动所有DataNode, 具体命令如下:% |, V8 L8 ?, M' M( K; B
    sbin/hadoop-daemons.sh start datanode
    % N  B! o& Z( L. Q" J- ?你也可以使用以下命令一次性启动NameNode和所有DataNode" }7 O: s, `& G
    sbin/ start-dfs.sh  p, N! \4 x) i+ W* H
    3) 启动YARN。 你可以使用以下命令分别启动ResourceManagerNodeManager
    & O% g/ \. N; \
    sbin/hadoop-daemon.sh start namenode% B$ H( }3 }! k
    sbin/hadoop-daemon.sh start datanode
    . C7 I  o+ B2 K# E0 }7 h如果有多个NodeManager, 可使用yarn-daemon.sh启动所有NodeManager, 具体命令如下:( O6 `4 Z7 _6 o, [- ^$ y
    sbin/yarn-daemon.sh start nodemanager
    $ i& ?& \5 `/ F  M( O7 v9 b( u# v你也可以使用以下命令一次性启动ResourceManager和所有NodeManager
    / A; s7 h" O: {  H3 {' r& e
    sbin/start-yarn.sh
    , u% G3 C; `$ z2 h5 H# ], X' z2 ~通过如下jps命令查看是否启动成功:
    4 s, I1 P2 `# E9 I$ z3 e( v* m
    dong@YARN001:/opt/hadoop/hadoop-2.0$ jps
    , ]. I; T/ h3 A/ |27577 NameNode$ v' X5 T) c" u4 y- w
    30315 ResourceManager  [3 `6 W$ p, _1 l! y) z; T" o7 }
    27924 SecondaryNameNode
    7 H5 N; o* X0 A0 D& W- G$ Z. P16803 NodeManager, _1 d+ w$ B; B2 E
    通过以下URL可查看YARN是否启动成功:
    9 K4 j) x  z" T, B* [1 t! n) G8 R
    http://YARN001:8080/% M- H6 d( \6 H* F7 |
    YARN对外提供的Web运行界面如图1-10所示。1 j: v8 F7 X- Q+ h. J" q. K
    1-10 YARN对外提供的Web界面
    , `- ?( X/ G& p+ v如果安装过程中出现问题, 可通过查看日志发现问题所在。
    Hadoop日志存放在$HADOOP_HOME/logs目录下的以".log"结尾的文件
    - p4 {, q/ Z$ u2 `  A中, 比如
    yarn-dongxicheng-resourcemanager-yarn001.log就是ResourceManager产生的日志。' i  V+ k- _9 h6 ?. J! O% w
    经过以上三步操作,
    Hadoop成功启动后, 接下来可以通过Hadoop Shell或者Eclipse插件访问HDFS和提交MapReduce作业。 下面两小1 s6 N/ h3 F' b1 s3 Y" z) w
    节分别介绍
    Hadoop ShellEclipse插件使用方法。9 p# v  Z4 F$ }
    1.5.2 Hadoop Shell介绍
    1 a/ V* d  g  f( V' D' y! U: P
    1.4节我们曾提到, bin目录下是最基础的集群管理脚本, 用户可以通过该脚本完成各种功能, 如HDFS文件管理、 MapReduce" |. y6 h9 ?" I: K9 a. I  h0 Z+ A
    业管理等, 更加详细的脚本使用说明, 可参考附录
    C- d, k' z) Q9 q
    作为入门, 本节介绍的是
    bin目录下Hadoop脚本的使用方法。 如果你已经对Hadoop 1.0有所了解( 比如尝试安装和使用过Hadoop$ Z$ Q+ `- w3 p
    1.0
    ) , 那么可直接使用该脚本, 因为该脚本的功能与Hadoop 1.0对应的Hadoop脚本功能完全一致。6 W; `0 R/ @5 X. ?3 G. V9 j2 Q, b" @7 ?
    该脚本的使用方法为:# M4 S* K5 d! e. }5 ]( x
    hadoop [--config confdir] COMMAND+ V8 o. I- d3 Q5 c$ A. f; M1 y% }
    其中, --config用于设置Hadoop配置文件目录。 默认目录为${HADOOP_HOME}/conf。 而COMMAND是具体的某个命令, 常用的
    4 z! t- h- c( f' }& ~
    HDFS管理命令fs、 作业管理命令job和作业提交命令jar等, 它们的使用方法如下。
    * j/ j3 B7 l  \/ z
    1HDFS管理命令fs和作业管理命令job
    % h: S" D4 n5 t4 ^
    它们的用法一样, 均为:$ K; ~1 J' b6 K- S4 W
    bin/hadoop command [genericOptions] [commandOptions]6 U3 p  \( i1 f& G# R' Q8 X
    其中, command可以是fs或者jobgenericOptions是一些通用选项, commandOptionsfs或者job附加的命令选项, 看下面两个例子。
    ; S2 Y) \6 J1 P5 Y) [& t* |
    &#10065;HDFS上创建一个目录/test, 命令如下:
      ^6 \# H" c, ^( S$ L% A
    bin/hadoop fs -mkdir /test
    $ l; Z/ ^+ \5 |&#10065;显示所有Hadoop上正在运行的作业, 命令如下:
    5 ^! |8 k/ |$ j+ n( X# F9 E' b
    bin/hadoop job -list
    8 W4 b, ~) @" x# K  u; F7 q) n* W2) 作业提交命令jar
    9 A2 k* U- v4 ]/ K: g
    这个命令的用法是:5 U/ @6 O: r2 s$ E) n- ~
    hadoop jar <jar> [mainClass] args... Y" b' k% N5 z4 K' Y% Y  B
    其中, <jar>表示JAR包名, mainClass表示main class名称, 可以不必输入而由jar命令自动搜索, argsmain class输入参数。 举例如
    8 {! D+ R5 Q1 ]下:+ q; Z  d& o. ^
    bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar pi 5 10) i1 k( o/ ]# o' C8 X+ U
    其中pihadoop-mapreduce-examples-*.jar 中一个作业名称, 该作业主要功能是采用拟蒙特卡罗法估算圆周率pi3.1415926…) 的大' R+ Y& ?. w) y- b
    小, 它有两个整型输入参数:
    Map Task数目和样本数目。+ N; S: y7 w9 Z8 e
    其他更多命令, 读者可自行查阅
    Hadoop官方设计文档。" P/ N" s& y# \% w3 S) x
    [4] 单机环境中, Hadoop有两种工作模式: 本地模式和伪分布式模式。 其中, 本地模式完全运行在本地, 不会加载任何Hadoop服务,& \8 t4 }8 F7 ?( d
    因而不会涉及
    Hadoop最核心的代码实现, 伪分布式即为单点集群, 在该模式下, 所有的守护进行均会运行在单个节点上, 因而本节
    8 t% p# f* U% V' I; b4 y3 C选用该工作模式。
      
    9 i+ s8 F0 e. B. ]- l6 o5 c& T* M" {2 j. f2 v/ H# M

    4 S' T7 T) {" C  N) e
    回复

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-12-4 01:36 , Processed in 0.076301 second(s), 28 queries .

    Powered by Javazx

    Copyright © 2012-2022, Javazx Cloud.

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