Skip to content

Instantly share code, notes, and snippets.

@shawnsi
Last active September 19, 2016 18:01
Show Gist options
  • Save shawnsi/029d583812028d587047e4e65ce6466a to your computer and use it in GitHub Desktop.
Save shawnsi/029d583812028d587047e4e65ce6466a to your computer and use it in GitHub Desktop.
EMR vs Hadoop
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Cost Analysis (EMR vs Hadoop on EC2)\n",
"\n",
"\n",
"## Assumptions\n",
"\n",
"### Hadoop on EC2\n",
"\n",
"* EC2 instances are 1 year reserved (all upfront)\n",
"* replication factor of 3\n",
"\n",
"### EMR\n",
"\n",
"* S3 Objects are 100MB in size\n",
"* EC2 instances are spot instances (price updated on 9/18/16)\n",
"\n",
"## Methodology\n",
"\n",
"A traditional Hadoop cluster is designed by dataset size. The minimum number of nodes to provide replicated the storage requirement is determined. From here the EC2 cost is determined.\n",
"\n",
"The EMR cluster is designed to satisfy the original storage requirement via S3. Additionaly, spot EC2 instances are allocated to provide comparable compute resources to the traditional cluster. The EMR cost includes:\n",
"\n",
"* S3 storage cost\n",
"* S3 API request cost\n",
"* EC2 spot compute cost\n",
"* EMR compute cost\n",
"\n",
"## Additional Considerations\n",
"\n",
"These costs are not factored in to the estimate:\n",
"\n",
"* Hadoop operational cost\n",
"* Backup/snapshotting for Hadoop HDFS\n",
"\n",
"These optimizations are not factored in to the estimate:\n",
"\n",
"* S3 lifecycle management for archivable EMR data\n",
"* S3 volume discounts\n",
"* Compute is only used as needed on EMR\n",
"\n",
"## Storage Optimized\n",
"\n",
"This is a cost projection for a storage-optimized Hadoop cluster using d2.xlarge instances. The EMR cluster uses c4.xlarge instances to provide comparable compute resources."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZkAAAEPCAYAAACQmrmQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XlcVeX2+PHPwtkcE0RF1JwInFIrpwbUrLRsVMts0gab\nrGy+t3tv9rt9K+/NNM3S0rLMzBxuZqYNGmaJlrMGTjlPCeWAICCwfn/swwEJkZDDPnDW+/U6r85+\n9j57r7NDFs+wn0dUFWOMMcYXgtwOwBhjTNllScYYY4zPWJIxxhjjM5ZkjDHG+IwlGWOMMT5jScYY\nY4zP+DTJiMhUETkkIuvz2fewiGSJSNNcZcNFZLuIbBWRm3KVtxaRtZ59k0REPOXlReQDEdkhIqtE\nJMKX38cYY8xf4+uazDtA77yFIhIK3ABsyVXWFHgIaA1EA2NEpLJn93jgOVVtCtQGbvGU3wFUVtXz\ngBHAWJ98C2OMMUXi0ySjqkuBI/nseg34O5D7SdDrgDmqmqKq+4AVQA8RqQ1EqOpCz3HvA9m1nOuB\nKZ5rzQPaicg5xf5FjDHGFEmJ98mISE8gRVV/zrMrDNiXa3uvp6wBsD9X+R5PeX6f2e853hhjjB8o\nX5IXE5EKwL+Bawtx+OkSYEGJsdxfDsoYY4zPlGiSwal5NANWejrvw4AYEemBUyMJz3VsQ+ArnNpJ\nWJ7y7NrLPs929sCC+pxa6/ESEZukzRhjikBVpaifLYnmMvG8UNWdqhqqqk09nfW/Aper6jZgHnCD\niFQXkXDgQmCxqh4GNolIH8/57gY+87z/HLgLQESuB9aqavLpAlFVe6nywgsvuB6Dv7zsXti9sHtR\n8Ots+XoI82xgCdBSRHaLyOA8hyg5CehX4C1gIxADDFfVVM9xw4BXRWQ3zkCC6Z7yD4F0EdmDM7rs\nUd99G2OMMX+VT5vLVPXmM+yPyrM9Ghidz3Hrgbb5lGfgDGM2xhjjh+yJ/wAUHR3tdgh+w+5FDrsX\nOexeFB8pjja30kBENFC+qzHGFBcRQc+i47+kR5cZY0pQkyZN2LVrl9thmFKgcePG7Ny5s9jPazUZ\nY8owz1+hbodhSoHT/aycbU3G+mSMMcb4jCUZY4wxPmNJxhhjjM9YkjHG+I0lS5bQpk0bt8M4xb33\n3sunn34KwMSJE+nfv3+xnDc5OZmgoCDS09OL5Xyns2DBAvr16+fTaxTEkowxxhVt2rTh448/PqWs\nRYsW/OMf/zjrc588eZJhw4bRvHlzzjnnHNq3b8+8efO8+1etWkVQUBDlypWjUqVKNGzYkJtvvpll\ny5adcp5t27axdOlSBgwY4C3zrJlYLIrzXKfTu3dvtm3bxtq1a31+rfxYkjHG+I0GDRpwyy23nPnA\nM0hLSyMoKIiZM2eya9cuHnzwQQYMGMD27du9x5QvX56MjAyOHTvGokWLiIiIoEePHsyfP997zKRJ\nk7j11lvPOh63DRw4kIkTJ7pybUsyxhi/kbe5rH79+vznP/+hU6dOREREMGTIELKysrz7v/rqKzp2\n7Ejt2rXp1q0b69atA6BatWq88cYbtG/fnuDgYO6//34aNWrE6tWrT7meiFCpUiUiIiJ4+eWXeeih\nh3juuee8++fPn8/ll19+ymcyMjJ46KGHqFGjBueffz5Lly717nv77bdp2bIlNWrUICoqitmzZ5/y\n2X/+85+EhoZy3nnnMX369FP2HTp0iH79+hESEkLz5s0ZN27cKfv/+9//0rRpU+rWrcttt93GH3/8\nAeQk1Ndee40uXbrQqlUr/vWvf53y2e7du/Pll18WfPN9xe0ZPktwJlE1JtD4889969atddq0aaeU\nxcTEaJs2bbzb9erV0379+mlmZqaePHlSO3XqpNOnT1dV1Y0bN2rt2rV16dKlqqr66aefauPGjTUt\nLe1P1zpw4IBWqlRJN23apKqqK1eu1AoVKvzpuB9//FGDgoL08OHDmpGRoUFBQbp3717v/gkTJmjF\nihV1xowZmpGRoW+++aa2bNnSu3/u3Lm6Z88eVVVdsGCBVqtWTQ8cOKCqqh9++KG2aNFC9+zZo8nJ\nydq3b18NCgryxturVy+95557NC0tTTdu3Kj169fXzz//XFVVp02bpuedd55u3bpVU1JSdODAgXrj\njTeqqmpqaqqKiD7wwAOqqpqcnKwdOnQ45d4eO3ZMRUQPHz582v8fp/tZ8ZQX/Xfv2Xy4NL38+R+b\nMb5ypp97KJ5XURQ2yXz//ffe7eeff16ffvppVVUdPny4PvLII6d8vmPHjrpkyZJTytLS0rR79+76\n6KOPestOl2R27NihQUFBun37dv399981KChIjx496t0/YcIE7datm3c7NTVVg4KCNDk5Od/vGB0d\n7U0Uffr00bFjx3r3/fzzz94kc+jQoT8lgZdeekn79++vqqrXXHONjh492rtv7969KiKanJzsTTKb\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f3c8c2cb630>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib inline\n",
"\n",
"import matplotlib.pyplot as plt\n",
"import math\n",
"\n",
"def compute_hours(storage_gbs, instance_storage):\n",
" nodes = math.ceil(storage_gbs * 3 / instance_storage)\n",
" return nodes * 24 * 30\n",
" \n",
"def hadoop_cost(storage_gbs, instance_storage, compute_rate):\n",
" return compute_hours(storage_gbs, instance_storage) * compute_rate\n",
"\n",
"def emr_cost(storage_gbs, instance_storage, compute_rate):\n",
" storage_cost = storage_gbs * 0.03\n",
" s3_api_cost = storage_gbs * 10 * 0.0004 # s3 GET rate for 100MB objects\n",
" compute_cost = compute_hours(storage_gbs, instance_storage) * compute_rate\n",
" return storage_cost + compute_cost + s3_api_cost\n",
"\n",
"def plot(func, instance_storage, compute_rate, label):\n",
" return plt.plot([func(n * 1000, instance_storage, compute_rate) for n in range(100)], label=label)\n",
"\n",
"hadoop, = plot(hadoop_cost, 6000, 0.337, 'hadoop') # d2.xlarge compute\n",
"emr, = plot(emr_cost, 6000, 0.0322 + 0.052, 'emr') # c4.xlarge spot compute on EMR\n",
"plt.xlabel('Data (TB)')\n",
"plt.ylabel('Cost (monthly)')\n",
"plt.legend([hadoop, emr])\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"## Compute Optimized\n",
"\n",
"This is a cost projection for a compute-optimized Hadoop cluster using c3.8xlarge instances. The c3 generation is used in order to provide local instance storage. The EMR cluster uses c4.8xlarge instances which provide comparable compute resources without instance storage."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f3c8c2c70f0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"hadoop, = plot(hadoop_cost, 640, 0.992, 'hadoop') # c3.8xlarge compute\n",
"emr, = plot(emr_cost, 640, 0.2632 + 0.270, 'emr') # c4.8xlarge spot compute on EMR\n",
"plt.xlabel('Data (TB)')\n",
"plt.ylabel('Cost (monthly)')\n",
"plt.legend([hadoop, emr])\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment