README
上传用户:quxuerui
上传日期:2018-01-08
资源大小:41811k
文件大小:6k
源码类别:

网格计算

开发平台:

Java

  1. ### "Gridmix" Benchmark ###
  2. Contents:
  3. 0 Overview
  4. 1 Getting Started
  5.   1.0 Build
  6.   1.1 Configure
  7.   1.2 Generate test data
  8. 2 Running
  9.   2.0 General
  10.   2.1 Non-Hod cluster
  11.   2.2 Hod
  12.     2.2.0 Static cluster
  13.     2.2.1 Hod cluster
  14. * 0 Overview
  15. The scripts in this package model a cluster workload. The workload is
  16. simulated by generating random data and submitting map/reduce jobs that
  17. mimic observed data-access patterns in user jobs. The full benchmark
  18. generates approximately 2.5TB of (often compressed) input data operated on
  19. by the following simulated jobs:
  20. 1) Three stage map/reduce job
  21.    Input:      500GB compressed (2TB uncompressed) SequenceFile
  22.                  (k,v) = (5 words, 100 words)
  23.                  hadoop-env: FIXCOMPSEQ
  24.      Compute1:   keep 10% map, 40% reduce
  25.    Compute2:   keep 100% map, 77% reduce
  26.                  Input from Compute1
  27.      Compute3:   keep 116% map, 91% reduce
  28.                  Input from Compute2
  29.      Motivation: Many user workloads are implemented as pipelined map/reduce
  30.                  jobs, including Pig workloads
  31. 2) Large sort of variable key/value size
  32.      Input:      500GB compressed (2TB uncompressed) SequenceFile
  33.                  (k,v) = (5-10 words, 100-10000 words)
  34.                  hadoop-env: VARCOMPSEQ
  35.      Compute:    keep 100% map, 100% reduce
  36.      Motivation: Processing large, compressed datsets is common.
  37. 3) Reference select
  38.      Input:      500GB compressed (2TB uncompressed) SequenceFile
  39.                  (k,v) = (5-10 words, 100-10000 words)
  40.                  hadoop-env: VARCOMPSEQ
  41.      Compute:    keep 0.2% map, 5% reduce
  42.                  1 Reducer
  43.      Motivation: Sampling from a large, reference dataset is common.
  44. 4) Indirect Read
  45.      Input:      500GB compressed (2TB uncompressed) Text
  46.                  (k,v) = (5 words, 20 words)
  47.                  hadoop-env: FIXCOMPTEXT
  48.      Compute:    keep 50% map, 100% reduce Each map reads 1 input file,
  49.                  adding additional input files from the output of the
  50.                  previous iteration for 10 iterations
  51.      Motivation: User jobs in the wild will often take input data without
  52.                  consulting the framework. This simulates an iterative job
  53.                  whose input data is all "indirect," i.e. given to the
  54.                  framework sans locality metadata.
  55. 5) API text sort (java, pipes, streaming)
  56.      Input:      500GB uncompressed Text
  57.                  (k,v) = (1-10 words, 0-200 words)
  58.                  hadoop-env: VARINFLTEXT
  59.      Compute:    keep 100% map, 100% reduce
  60.      Motivation: This benchmark should exercise each of the APIs to
  61.                  map/reduce
  62. Each of these jobs may be run individually or- using the scripts provided-
  63. as a simulation of user activity sized to run in approximately 4 hours on a
  64. 480-500 node cluster using Hadoop 0.15.0. The benchmark runs a mix of small,
  65. medium, and large jobs simultaneously, submitting each at fixed intervals.
  66. Notes(1-4): Since input data are compressed, this means that each mapper
  67. outputs a lot more bytes than it reads in, typically causing map output
  68. spills.
  69. * 1 Getting Started
  70. 1.0 Build
  71. 1) Compile the examples, including the C++ sources:
  72.   > ant -Dcompile.c++=yes examples
  73. 2) Copy the pipe sort example to a location in the default filesystem
  74.    (usually HDFS, default /gridmix/programs)
  75.   > $HADOOP_HOME/hadoop dfs -mkdir $GRID_MIX_PROG
  76.   > $HADOOP_HOME/hadoop dfs -put build/c++-examples/$PLATFORM_STR/bin/pipes-sort $GRID_MIX_PROG
  77. 1.1 Configure
  78. One must modify hadoop-env to supply the following information:
  79. HADOOP_HOME     The hadoop install location
  80. GRID_MIX_HOME   The location of these scripts
  81. APP_JAR         The location of the hadoop example
  82. GRID_MIX_DATA   The location of the datsets for these benchmarks
  83. GRID_MIX_PROG   The location of the pipe-sort example
  84. Reasonable defaults are provided for all but HADOOP_HOME. The datasets used
  85. by each of the respective benchmarks are recorded in the Input::hadoop-env
  86. comment in section 0 and their location may be changed in hadoop-env. Note
  87. that each job expects particular input data and the parameters given to it
  88. must be changed in each script if a different InputFormat, keytype, or
  89. valuetype is desired.
  90. Note that NUM_OF_REDUCERS_FOR_*_JOB properties should be sized to the
  91. cluster on which the benchmarks will be run. The default assumes a large
  92. (450-500 node) cluster.
  93. 1.2 Generate test data
  94. Test data is generated using the generateData.sh script. While one may
  95. modify the structure and size of the data generated here, note that many of
  96. the scripts- particularly for medium and small sized jobs- rely not only on
  97. specific InputFormats and key/value types, but also on a particular
  98. structure to the input data. Changing these values will likely be necessary
  99. to run on small and medium-sized clusters, but any modifications must be
  100. informed by an explicit familiarity with the underlying scripts.
  101. It is sufficient to run the script without modification, though it may
  102. require up to 4TB of free space in the default filesystem. Changing the size
  103. of the input data (COMPRESSED_DATA_BYTES, UNCOMPRESSED_DATA_BYTES,
  104. INDIRECT_DATA_BYTES) is safe. A 4x compression ratio for generated, block
  105. compressed data is typical.
  106. * 2 Running
  107. 2.0 General
  108. The submissionScripts directory contains the high-level scripts submitting
  109. sized jobs for the gridmix benchmark. Each submits $NUM_OF_*_JOBS_PER_CLASS
  110. instances as specified in the gridmix-env script, where an instance is an
  111. invocation of a script as in $JOBTYPE/$JOBTYPE.$CLASS (e.g.
  112. javasort/text-sort.large). Each instance may submit one or more map/reduce
  113. jobs.
  114. There is a backoff script, submissionScripts/sleep_if_too_busy that can be
  115. modified to define throttling criteria. By default, it simply counts running
  116. java processes.
  117. 2.1 Non-Hod cluster
  118. The submissionScripts/allToSameCluster script will invoke each of the other
  119. submission scripts for the gridmix benchmark. Depending on how your cluster
  120. manages job submission, these scripts may require modification. The details
  121. are very context-dependent.
  122. 2.2 Hod
  123. Note that there are options in hadoop-env that control jobs sumitted thruogh
  124. Hod. One may specify the location of a config (HOD_CONFIG), the number of
  125. nodes to allocate for classes of jobs, and any additional options one wants
  126. to apply. The default includes an example for supplying a Hadoop tarball for
  127. testing platform changes (see Hod documentation).
  128. 2.2.0 Static Cluster
  129. > hod --hod.script=submissionScripts/allToSameCluster -m 500
  130. 2.2.1 Hod-allocated cluster
  131. > ./submissionScripts/allThroughHod