{
  "slug": "hitchhiker",
  "term": "Hitchhiker",
  "aliases": [
    "Hitchhiker-XOR",
    "Hitchhiker-XOR+",
    "Hitchhiker-nonXOR"
  ],
  "definition": "Hitchhiker is an erasure-coded storage design that couples Reed-Solomon instances to reduce single-data-unit repair traffic without adding parity units.",
  "note": "Piggybacking adds functions of earlier code instances to later ones. Decoding the earlier instance allows those additions to be removed; the underlying recovery property is retained. Useful repair savings depend on the chosen functions, not merely on coupling instances. [piggybacking]\n\nHitchhiker distinguishes XOR, XOR+ and nonXOR variants. XOR+ requires an all-XOR parity in its base code. Parity repair is not the optimized data-repair case; hop-and-couple addresses scattered substripe reads. [hitchhiker2014]\n\nThe versioned decoder selects its special path only for one erased data unit; parity or multiple erasures take another path. That implementation does not establish a default HDFS deployment: the 3.4.3 policy guide lists RS and XOR codecs. [hadoop-hh343] [hdfs-ec343]\n\nIn the fixed 10+4 accounting example, XOR+ reads 6.5 block-equivalents per missing data block and 10 for parity. Uniformly weighting ten data roles and four parity roles gives 7.5, a 25% reduction from the 10-block baseline, not the data-only 35%. These are independent repair counts, not a full-stripe outage or measured speedup. [hesela-hitchhiker]\n\nHop-length controls a locality trade-off: half a block makes each substripe contiguous, but a short degraded read may also reconstruct its unrequested coupled bytes. Smaller hops reduce that separation at the cost of less contiguous substripe reads. Whole-block accounting does not establish small-read cost. [hitchhiker2014]",
  "status": "limited",
  "advantages": [
    {
      "text": "Retains the base code's recovery property while allowing a different repair-read pattern.",
      "citationIds": [
        "piggybacking"
      ]
    }
  ],
  "limitations": [
    {
      "text": "A decoder class alone does not establish an enabled HDFS policy or disk-level read savings.",
      "citationIds": [
        "hadoop-hh343",
        "hdfs-ec343"
      ]
    }
  ],
  "related": [
    "erasure-coding",
    "reed-solomon-code",
    "repair-read-amplification",
    "repair-locality",
    "subpacketization"
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-11-03",
  "citations": [
    {
      "id": "hitchhiker2014",
      "title": "Rashmi et al. A Hitchhiker's Guide to Fast and Efficient Data Reconstruction in Erasure-coded Data Centers. SIGCOMM 2014, sections 3-7 and Appendix.",
      "url": "https://www.cs.cmu.edu/~nihars/publications/Hitchhiker_SIGCOMM14.pdf",
      "accessed": "2026-11-03"
    },
    {
      "id": "piggybacking",
      "title": "Rashmi, Shah and Ramchandran. A Piggybacking Design Framework for Read-and Download-efficient Distributed Storage Codes, section II.",
      "url": "https://www.cs.cmu.edu/~nihars/publications/Piggybacking.pdf",
      "accessed": "2026-11-03"
    },
    {
      "id": "hadoop-hh343",
      "title": "Apache Hadoop 3.4.3: HHXORErasureDecodingStep, single-data versus multiple/parity dispatch.",
      "url": "https://github.com/apache/hadoop/blob/rel/release-3.4.3/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/erasurecode/coder/HHXORErasureDecodingStep.java",
      "accessed": "2026-11-03"
    },
    {
      "id": "hdfs-ec343",
      "title": "Apache Hadoop 3.4.3: HDFS Erasure Coding, supplied policies and supported codecs.",
      "url": "https://hadoop.apache.org/docs/r3.4.3/hadoop-project-dist/hadoop-hdfs/HDFSErasureCoding.html",
      "accessed": "2026-11-03"
    },
    {
      "id": "hesela-hitchhiker",
      "title": "Hesela: Hitchhiker read plans and role-weighted recovery accounting.",
      "url": "https://hesela.com/analyses/lrc-repair-costs-locality/#hitchhiker-read-plans",
      "accessed": "2026-11-03"
    }
  ],
  "provenance": [
    "Status denotes a versioned implementation component, not a default filesystem policy. The public accounting module does not execute an encoder, decoder or HDFS cluster."
  ]
}
