java自学网VIP

Java自学网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2695|回复: 0

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

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

    [LV.Master]出神入化

    2040

    主题

    3698

    帖子

    6万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    66476

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

    发表于 2017-4-12 20:39:03 | 显示全部楼层 |阅读模式
    1.5 Hadoop初体验
    . f! _' c9 J' Z; I* a* V一般而言, 我们想要深入学习一个新的系统时, 首先要尝试使用该系统, 了解系统对外提供的功能, 然后再通过某个功能逐步深
    1 W8 t$ L. F) \! S入其实现细节。 本节将介绍如何在 伪分布式工作模式
    [4] 下使用Hadoop, 包括搭建Hadoop环境、 访问HDFS以及向YARN提交应用程序
    ) ?& M+ i5 L* a9 D+ R等最基本的操作。 本节只是有代表性地介绍
    Hadoop的一些基本使用方法, 使读者对Hadoop有一个初步认识, 并引导读者逐步进行更全; o2 T# _% \  e
    面的学习。; B8 o; r6 N8 N' f  [1 x
    1.5.1 搭建Hadoop环境/ U* Y8 X4 M  f5 G( m
    本小节仅介绍单机环境的搭建方法, 更加完整的Hadoop安装步骤和配置方法可参考本书最后的附录A和附录B。 另外, 需要注意
    & k" y; p, n7 R* b1 `% U1 P的是, 由于不同用户拥有的
    Linux环境不尽相同( 比如已经安装的软件不同、 统一软件的版本不同等) , 每个人安装Hadoop过程中遇到- p% R9 H7 Z+ |7 j9 O
    的问题可能不同, 此时需要根据具体的日志提示解决问题。 本小节仅给出一般情况下,
    Hadoop 2.0的安装步骤。
    1 @1 j! _' o/ r6 f2 @+ G步骤
    1 修改Hadoop配置文件。" c: X1 I- u/ E' T9 B1 ]! l! q
    1) 设置环境变量。 在${HADOOP_HOME}/etc/hadoop/hadoop-env.sh中, 添加JAVA安装目录, 命令如下:
    ( `* R5 W, k0 D& ^5 j2 c! G
    export JAVA_HOME=/usrb/jvm/java-6-openjdk* ~" v5 V8 q% F2 I1 o, K. j: [
    修改conf目录下的mapred-site.xmlcore-site.xmlyarn-site.xmlhdfs-site.xml四个文件, 在<configuration></configuration>之间添加的内, Q$ n" {7 {+ Y: }' ?/ @
    容见下面的介绍。
    ' N( W0 ^, K, P) A/ I. b
    2) 在${HADOOP_HOME}/etc/hadoop/下, 将mapred-site.xml.templat重命名成mapred-site.xml, 并添加以下内容:2 B7 [* D- @" k/ N! |
    <property>
    # v; R' {; l& k# P<name>mapreduce.framework.name</name>- S  {9 R- \  ~# w5 t
    <value>yarn</value>' v$ C3 \4 j- R* I
    </property>
    7 e, {7 V1 q/ [5 Z【 解释】 相比于Hadoop1.0, 用户无须再配置mapred.job.tracker, 这是因为JobTracker相关实现已变成客户端的一个库( 实际上在6 _0 E  E; i+ `# ]% o8 N: I
    Hadoop 2.0中, JobTracker已经不存在, 它的功能由另外一个称为MRAppMaster的组件实现) , 它可能被随机调度到任何一个slave上,
    ( E' l" Q% O' ^# \4 @3 n- p# O也就是它的位置是动态生成的。 需要注意的是, 在该配置文件中需用
    mapreduce.framework.name指定采用的运行时框架的名称, 在此指9 `6 q6 B6 {7 }7 e
    "yarn"/ X: G0 \$ S6 u5 u
    3) 在${HADOOP_HOME}/etc/hadoop/中, 修改core-site.xml, 为了简单, 我们仍采用Hadoop 1.0中的HDFS工作模式( 不配置HDFS) m* s4 f. n( o4 B& _
    Federation
    ) , 修改后如下:7 G# D6 A3 m& |' c
    <property>7 i- _% p# |9 S3 C. s: {  W# b
    <name>fs.default.name</name>
    3 _( V+ F7 ?- K5 Y) P- b$ L<value>hdfs://YARN001:8020</value>6 _+ X" s$ @$ w$ {* ~+ G2 c
    </property>
    8 Y4 b: b( b2 i- r' {6 r其中, YARN001表示节点的IP或者host6 Y3 T0 o! D8 g) h$ P' p( v
    4) 在${HADOOP_HOME}/etc/hadoop/中, 修改yarn-site.xml, 修改后如下:
    ( L6 E1 `8 S; O3 g  ?% b$ U
    <property>& {) R0 }( }6 ^  O* J2 [9 m
    <name>yarn.nodemanager.aux-services</name>, `7 z% W( z' B: Z0 q
    <value>mapreduce-shuffle</value>; x% r5 v$ I9 R1 [3 ]8 I
    </property>
    2 a0 M& I% i# x4 K4 ~# W2 M【 解释】 为了能够运行MapReduce程序, 需要让各个NodeManager在启动时加载shuffle servershuffle server实际上是Jetty/Netty) Y4 t) C9 q* p- Y( ^7 q
    Server
    Reduce Task通过该server从各个NodeManager上远程复制Map Task产生的中间结果。 上面增加的两个配置均用于指定shuffle
    ' t6 g+ v% q! m! oserver
    * i2 ~' ^: B$ {8 B" k
    5) 修改${HADCOP_HOME}/etc/hadoop中的hdfs-site.xml文件:3 X% R2 p9 I# Z3 o" w
    <property>7 Y& ?, k* Q& ^4 e
    <name>dfs.replication</name>9 a; P9 q; E8 s
    <value>1</value>1 Q: m% w; I5 f3 ~+ I  R
    </property>
    ) P# y! D# a& n/ B' `【解释】 默认情况下, HDFS数据块副本数是3, 而在集群规模小于3的集群中该参数会导致出现错误, 这可通过将dfs.replication
    0 G' Z. U2 Q, x* {整为
    1解决。
    3 @0 w4 b5 V1 ?/ U
    注意 如果你是在虚拟机中搭建Hadoop环境, 且虚拟机经常关闭与重启, 为了避免每次重新虚拟机后启动Hadoop时出现各种问
    7 @. S% ^2 z9 q题, 建议在
    core-site.xml中将hadoop.tmp.dir属性设置为一个非/tmp目录, 比如/data或者/home/dongxicheng/data( 注意该目录对当前用户需具7 s* f* `. g' G$ h& B5 C' T
    有读写权限) 。
    2 Q& q* O# S/ N% Y步骤
    2 设置免密码登录。
    + c. m2 V' l; r9 D4 C: `: r前面提到
    Hadoop启动/停止脚本需要通过SSH发送命令启动相关守护进程, 为了避免每次启动/停止Hadoop都要输入密码进行验% u, m- r8 _3 X+ s, P2 n
    证, 需设置免密码登录, 步骤如下。
    8 o% ~2 y: |. b# P
    1) 打开命令行终端, 输入以下命令:
    1 |3 M, G+ V' }0 ]4 U/ h
    ssh-keygen -t rsa. R8 ~2 Z# \" I, f  w
    将会在"~/.ssh/"目录下生成公钥文件id_rsa.pub和私钥文件id_rsa. f- _: X3 B  u8 {- a2 i& i
    2) 将公钥文件id_rsa.pub中的内容复制到相同目录下的authorized_keys文件中:
    / {8 c7 M! D3 O6 V0 v8 t
    cd ~/.ssh/% b* X7 X* [" N  t% f7 @! `* y
    cat id_rsa.pub >> authorized_keys
    " [( n% l/ Q1 e: g$ O; A9 E( X步骤3 启动Hadoop
    + F8 @* C# t' ]4 D/ e7 L9 D
    Hadoop安装目录中, 按以下三步操作启动Hadoop, 我们单步启动每一个服务, 以便于排查错误, 如果某一个服务没有启动成  T' g) y1 u% u, I6 v: U
    功, 可查看对应的日志查看启动失败原因。
    4 S. n/ }0 U+ c0 X7 T
    1) 格式化HDFS, 命令如下:
    5 _# O/ w: ?: R: v% F
    bin/hadoop namenode -format
    & |2 o9 L' W$ I5 I2) 启动HDFS。 你可以使用以下命令分别启动NameNodeDataNode
    2 _& k# f$ k! r0 @! V+ U6 }" y
    sbin/hadoop-daemon.sh start namenode" ~  T* [4 _; h" H* u8 u
    sbin/hadoop-daemon.sh start datanode8 K5 D2 C6 J* |1 F1 x* I3 Q- {
    如果有多个DataNode, 可使用hadoop-daemons.sh启动所有DataNode, 具体命令如下:2 U  b' Q3 h% p
    sbin/hadoop-daemons.sh start datanode
    4 {8 [. p, {3 T4 u9 @2 y3 c你也可以使用以下命令一次性启动NameNode和所有DataNode% M5 V2 t" v' U, K) h
    sbin/ start-dfs.sh
    ' \& Y. k* V4 Z6 M3) 启动YARN。 你可以使用以下命令分别启动ResourceManagerNodeManager
    2 b/ o. H% y. G. [+ c
    sbin/hadoop-daemon.sh start namenode
    * X, F1 J! L" d: o" q7 U5 ^sbin/hadoop-daemon.sh start datanode2 e; Y3 w4 I* r. S
    如果有多个NodeManager, 可使用yarn-daemon.sh启动所有NodeManager, 具体命令如下:  ?0 y6 Y( L: ?, H3 u
    sbin/yarn-daemon.sh start nodemanager/ h/ u# A, v" J3 e; h9 a* G
    你也可以使用以下命令一次性启动ResourceManager和所有NodeManager0 T/ V0 W- q, d9 C) U  i6 n2 m
    sbin/start-yarn.sh
    ( J4 ~# T* j$ R: p+ i) O, n通过如下jps命令查看是否启动成功:
    9 j- P0 N1 W' o0 o# E
    dong@YARN001:/opt/hadoop/hadoop-2.0$ jps/ ]- T8 c# C/ d: w+ H( {4 i) k/ _
    27577 NameNode
    , R& D& j  R" c4 z  Z2 U30315 ResourceManager$ B2 Y" L1 _9 ~6 R( W
    27924 SecondaryNameNode
    0 `5 g, U, S# j+ D; g3 I5 l16803 NodeManager
    " {  Q+ R  C4 k0 ~# S2 Q# A7 u通过以下URL可查看YARN是否启动成功:
    ( ]' ]; K, C5 v/ h
    http://YARN001:8080/$ l8 c& d3 R2 U* n
    YARN对外提供的Web运行界面如图1-10所示。
    8 |& d1 `9 p4 W: z! F
    1-10 YARN对外提供的Web界面
    * O( a& s, z1 i$ p) h6 _如果安装过程中出现问题, 可通过查看日志发现问题所在。
    Hadoop日志存放在$HADOOP_HOME/logs目录下的以".log"结尾的文件
    . i. {: n" X; E3 }( x中, 比如
    yarn-dongxicheng-resourcemanager-yarn001.log就是ResourceManager产生的日志。
    # _4 _; ~) }) X  z& ?2 o& o# r经过以上三步操作,
    Hadoop成功启动后, 接下来可以通过Hadoop Shell或者Eclipse插件访问HDFS和提交MapReduce作业。 下面两小
    - t( ?9 h5 U2 s0 M5 S) a节分别介绍
    Hadoop ShellEclipse插件使用方法。2 Q9 @3 f6 {- g  x! |& |7 \
    1.5.2 Hadoop Shell介绍
    ) X" ?( S" x1 t# Q) p
    1.4节我们曾提到, bin目录下是最基础的集群管理脚本, 用户可以通过该脚本完成各种功能, 如HDFS文件管理、 MapReduce
    & r- s. n  h+ n* N2 v" P: K5 h业管理等, 更加详细的脚本使用说明, 可参考附录
    C9 O7 A/ a; M+ d' t/ \
    作为入门, 本节介绍的是
    bin目录下Hadoop脚本的使用方法。 如果你已经对Hadoop 1.0有所了解( 比如尝试安装和使用过Hadoop
    # y! t9 U% q8 b& u( S; |1.0
    ) , 那么可直接使用该脚本, 因为该脚本的功能与Hadoop 1.0对应的Hadoop脚本功能完全一致。+ p- D* F" t; y/ T' x$ l  o# @
    该脚本的使用方法为:! J7 n) U4 S/ Q9 D) f  z
    hadoop [--config confdir] COMMAND
    6 Q+ D' X, X7 W5 Y其中, --config用于设置Hadoop配置文件目录。 默认目录为${HADOOP_HOME}/conf。 而COMMAND是具体的某个命令, 常用的: ]% `* y$ ?& P. ]. u6 {+ f
    HDFS管理命令fs、 作业管理命令job和作业提交命令jar等, 它们的使用方法如下。
    , X: Z, a! ^" p2 u$ l
    1HDFS管理命令fs和作业管理命令job
    ' _$ z& w: K- l! r
    它们的用法一样, 均为:$ v7 Q6 ?0 [( S5 b, p
    bin/hadoop command [genericOptions] [commandOptions]  I/ K8 R% B6 E2 z
    其中, command可以是fs或者jobgenericOptions是一些通用选项, commandOptionsfs或者job附加的命令选项, 看下面两个例子。
    " d% v! B1 [6 a
    &#10065;HDFS上创建一个目录/test, 命令如下:
    . g& B8 z' B* T4 K0 i' x
    bin/hadoop fs -mkdir /test
    ) Y# U$ u6 H$ U- \( N! V9 E: w&#10065;显示所有Hadoop上正在运行的作业, 命令如下:( ~/ s3 E2 f+ U" Z! o' i; M  m
    bin/hadoop job -list
    ' u  y/ R8 L7 E; x2 W2) 作业提交命令jar" t7 P9 o$ ]' |/ U, o9 T* Z
    这个命令的用法是:
    9 h) j! M& l, N- I2 G9 ?3 i" n0 C$ o
    hadoop jar <jar> [mainClass] args..% D2 f4 p4 I0 O* T2 C
    其中, <jar>表示JAR包名, mainClass表示main class名称, 可以不必输入而由jar命令自动搜索, argsmain class输入参数。 举例如
    / \0 U  E& _% |' Q9 j* B; ~" A下:
    + I$ I+ o* x8 k
    bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar pi 5 10
    3 y; Q5 ]" H5 R9 W, \9 s9 C其中pihadoop-mapreduce-examples-*.jar 中一个作业名称, 该作业主要功能是采用拟蒙特卡罗法估算圆周率pi3.1415926…) 的大
    6 Z1 J  j' [- j小, 它有两个整型输入参数:
    Map Task数目和样本数目。3 u0 Z2 N$ Y) s6 f2 M; `- ?& ^# X: H
    其他更多命令, 读者可自行查阅
    Hadoop官方设计文档。
    ) B& R1 d& n& v0 _  A6 ^9 o$ [
    [4] 单机环境中, Hadoop有两种工作模式: 本地模式和伪分布式模式。 其中, 本地模式完全运行在本地, 不会加载任何Hadoop服务,; J  J7 ]! v7 Y3 C& G9 u. z  q
    因而不会涉及
    Hadoop最核心的代码实现, 伪分布式即为单点集群, 在该模式下, 所有的守护进行均会运行在单个节点上, 因而本节. V. E4 }2 M: g5 l% b5 I& y$ r
    选用该工作模式。
      * G" w# K# V& \) }

    # b1 X$ t0 E. M% ]* P  L+ o0 m- L- N
    回复

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2025-1-22 15:07 , Processed in 0.144440 second(s), 30 queries .

    Powered by Javazx

    Copyright © 2012-2022, Javazx Cloud.

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