分别建立三个文件:

file1txt

file2.txt

file3.txt


文件内容分别是:

MapReduce is simple

MapReduce is powerful is simple

Hello MapReduce bye MapReduce


aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABJkAAAD2CAYAAAB1J1a3AAAABHNCSVQICAgIfAhkiAAAIABJREFUeF7snQe4FEXWhg8SDQQFIyqC6LKuGDHnuOaAOWfXnFf9zTmia06YE+acs4A5LyoqgqCgCKKA5DR/v8XW2NO3Z7rn3hmYO/Mdn5HbXdUV3uqurjp1TnWTTCAmEQEREAEREAEREAEREAEREAEREAEREAEREIEGEJinAdfqUhEQAREQAREQAREQAREQAREQAREQAREQARFwBKRk0o0gAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiLQYAJSMjUYoRIQAREQAREQAREQAREQAREQAREQAREQARGQkkn3gAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQIMJSMnUYIRKQAREQAREQAREQAREQAREQAREQAREQAREQEom3QMiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAINJiAlU4MRKgEREAEREAEREAEREAEREAEREAEREAEREAEpmXQPiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAINJiAlEwNRqgEREAEREAEREAEREAEREAEREAEREAEREAEmoFg2rRpNnz4cBs/frzNnDlTVERABERABERABERABERABERABERABERABETAmjZtaq1bt7aOHTtaq1atChJpMnXq1Mw333xjCy20kM0///zuYokIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiEDpCWQyGfv+++9t9dVXL33iZUhx+vTpNmbMGBs1apR169bNWrRokTeXZlgwoWDi16xZM2vSpEneyAoQAREQAREQAREQAREQAREQAREQAREQARGoP4HG5kHWvHlzW2yxxVyF0SF16dIlb+WbjRs3zrp27eo0UVgxScmUl5UCREAEREAEREAEREAEREAEREAEREAERKAmCbRv395GjhxZsO7zzJo1y1q2bCkFU0FMChQBERABERABERABERABERABERABERCB2iWARVOSFZb7uhzWS7Jgqt0bRTUXAREQAREQAREQAREQAREQAREQAREQgYYScEomiQiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAg0hICUTA2hp2tFQAREQAREQAREQAREQAREQAREQAREQAQcASmZdCOIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAg0mICUTA1GqAREQAREQAREQAREQAREQAREQAREQAREQASkZNI9IAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIi0GACJVMyTZ061R566KEGF6ihCfhyZDIZ6927t3FcKvniiy/s7bffLlVyRacTZnzffffZ8OHDi06jvhfAUyICIiACIiACIiACIiACIiACIiACIjB3CYwdO9ZuvvlmO+644+y0006zl156qagC3X///XbrrbcWdU3ayCVTMr3yyivWtGnTtPmWLZ4vx6xZs+zVV1+1adOmlSyvH374wb788suSpVdsQmHG06dPN+o4J+Sqq66yN954Y05kpTxEQAREQAREQAREQAREQAREQAREQATyEBg5cqTtvffe9uuvv1rPnj1t1VVXtauvvtquu+66PFfUPf3RRx/ZO++8UzegBGdKomRC4fHaa6/ZNtts44o0ZswYC1u+TJo0yfiFBSBYBo0YMaJONaZMmWLffPONodSJWtD8/vvvLv7QoUPtl19+ybk2Wg4fOGrUKKccmjx5cp28OPftt9+68IkTJ9YJHzdunH311Vf2559/1gnjBNf7ssZFKBT+xx9/uPrBizziyufTjNaNm2mJJZZwwVyPjB492qUTtd5KyqdQe9E+48ePN9L46aef4qqocyIgAiIgAiIgAiIgAiIgAiIgAiIgAnOAwOWXX+4US+edd55tvPHGtueee9qNN95oWCehZ/GCDubzzz93+oqotG3b1tq1axc9XZLjZqVIBSuXNddc0+aff35DGXLkkUfaXXfd5Y6Rxx9/3P273377uX9vv/12GzBggP3tb3+z7777zpZcckk7+eSTrUmTJvbZZ5+58L///e9OsYPi58wzz7R5553XXXvsscfaAQccYI8++qjtsccetvjii7vzSLgcM2fOzJ4jzfnmm88GDx5sNIiHiWLsiSeesJVWWsmIf80119hJJ51kK6ywgrsW1zhcAAlHW9iqVStr06bN7MyC/3/yySd25513Wrdu3eznn3+2Fi1a2BlnnGEtW7Z0cZLCTz31VNthhx2sX79+7lqUZueee64tvfTS2Tz8H+G6ce7ss8+2o48+2pZddlnH+6CDDrIPPvjAMeTGuvjii23BBRd0lxfKJ6m9Hn74YVc3btAhQ4a4tCQiIAIiIAIiIAIiIAIiIAIiIAIiIAJzlgBGN/3793d6iLAst9xy9uCDD9rCCy/sTvft29euvPJKW2WVVWzYsGFOl4GlE/8iYb1GTkIlOGiwkgnlDP5/aNHSCBYxuH2hSKJiM2bMsLvvvttZ46CcQdFz+umnOyUTgkbuqaeesr322ssdY/kzcOBAu+mmm6x58+bZLPOVg0bwZUPxgknYtttu66779NNP7ZxzzrHFFlvMHeNeR11QMmHBhKLsoosuckowlDEokHxjoAC79tpr7f/+7/9cWSkX6VNWlF9J4b7gWAeh+EI5RH733HOPUyCFJV/dwnHC9YQhN9WOO+6YjZImn5xM/3eA0u2yyy6zNdZYwzbbbLO4KDonAiIgAiIgAiIgAiIgAiIgAiIgAiJQZgKDBg1yugcMXaLStWtXdwpdxllnneV0K6uttprbZgdjHfQNGKgg6DXQQZRDGuwuhzIDSx/MrdLIAgss4CycUDJhuoWl0qGHHmodOnRwlj8omnD3Iowf1jic9wKgLbbYIkfBRFi+cmA+5gULIVznvGCVA9j33nvPKZjYSBuXM+Trr7+29u3bOwUTgkILkzQv//3vf511lFeGkc5GG21k77//vouSFO7ToS6+cTfccEPnthfdRypf3bKFCf5Yf/31s4dYd3m3wmLyCaenv0VABERABERABERABERABERABERABCqHALqCeeaZx/0QXOF22WWX7O/11193Hk7oXVAwIcTF0Ca8zzJKpnK5yzVIyYQG7bnnnsuxmInDH95XCWUNlkWYad1xxx122GGHOXc49v3hh8KFfYX8j2vXXXfdnGQXWWSRnONC5UBR5IW8w5tl4wqG1RANwz5QCJZVCEqahRZaKHstf6BU8oJyLKpYoyHRGiJJ4T6dsDUWDU1dwnszFapbtjDBHyjpvHAT+XqkzSecVri9wuf1twiIgAiIgAiIgAiIgAiIgAiIgAiIwNwhsOiiizqdBtv5IJ07dzY+1MUPDyg8qtCrRHUZKJT8Xs5ch+4hqs8oVY0a5C737rvvun2VwhXgC3MoisJKDioTVoKwYfVRRx3l6kBYr1697Pnnn7dOnTq5L9Tts88+2fp5TV24wlGzrrhy+PjRuP78b7/95vZjuuGGG3L8FrFgQqhTuBE4x2cCvVAfXP/CQppeqZUU7q8LbzZO+iidwv6RheqWk3nCQb58UCgltVc+hglZKlgEREAEREAEREAEREAEREAEREAERKBEBHCJw+gGT6wDDzzQeYIts8wyTv/i9RVsB+Q9tHy2KKX8NkGcIx22BCqH1NuSCeXEM888YzvttFNOubCiwcWML8chbBbNHkpe2Hz7xBNPzCpoUOagVeO61Vdf3bnKseE2Qh69e/e2Pn36ZK+P/pGvHNF40WO/Mbg/jwXSiy++mI3GBlkokXB7Q1AgYXbmpXv37q58bNqNUG4a2u9blBTu04EhjUtaL7/8sq2zzjpZ97n61i1byNAf+fJJai+SwEIr7GYYl77OiYAIiIAIiIAIiIAIiIAIiIAIiIAIlI8A8/dDDjnE7WvNB84QLJvYs5qPdSF8lA1dgtdv4Cn12GOP5ehu0NOwv1M5pN6WTB9//LH7ClrUdY1C7rvvvm7nciyF2N18yy23zLqA8TU09iHia3JY/QACpRQ+gmjh2Cfp+uuvd9eijWO/p9133z1v3QuVI+9FQQBmZrvuuqvbZLxjx45OSbTddtu5r8khfM2Or7dRD6ySaKTNN988a5aGxRGbYhOOAmfChAm2cbD/0z//+U93fVK4L9vyyy9vp5xyiqsryjb+9lLfumUTCP1RKJ9C7UUSm2yyiducHLdClIrhvani8tI5ERABERABERABERABERABERABERCB0hNgDyb0KOhU2IYIoxWMVQ444ACXGV+uZ/7O5t/33Xefs3Diq/a77bZbtjB88IzzUaOhUpS2SaDIyKDICe8NlCZh9lHC5Q0FTZygNKHi+T6NhyURlcIPsFmzXF0XCh2siFD08CskSeUodC1hlBO/RRQ8cW5hNBjhbEAeF47W0NcDV7+oFAr3+1HBEO1ilFVD6+bLkpSP51CovSgfijQ4FXuvRJnoWAREQAREQAREQAREQAREQAREQARqlQB6Brym8Oaqr6BTweOqdevWbv9odBvoUvx8HV2E39InTldR33z5MFuhctfLkglXOKx78imYKCyKo6jSJFwJKhnelDschjInulFVHIA05Yi7LnyOcqJAyic0UKGyYK7WkHDyJY+o4qYUdYvWKS4fHyepvdIo/KL56VgEREAEREAEREAEREAEREAEREAERKD0BNCp4KHlJWq8g64izvOs9CXJTbFeezLh1oaL1dyWSilHfTkcccQReRu9lHUrlE99y67rREAEREAEREAEREAEREAEREAEREAERCBMoF6WTN26dasIipVSjvrCKGRiVsq6FcqnvmXXdSIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQJlAvSyYhFAEREAEREAEREAEREAEREAEREAEREAEREIEwASmZdD+IgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAg0mICUTA1GqAREQAREQAREQAREQAREQAREQAREQAREQASkZNI9IAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIi0GACUjI1GKESEAEREAEREAEREAEREAEREAEREAEREAERmCcQmz59ukiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQCwBdEdNmzaNDfMn52nTpo2NHTvWMplMwYgKFAEREAEREAEREAEREAEREAEREAEREAERqE0CY8aMMXRIhWSejh072m+//WYjR460adOmFYqrMBEQAREQAREQAREQAREQAREQAREQAREQgRoigAUTOqNRo0YZOqRC0iSwYMqgXBo+fLiNHz/eZs6cWSi+wkRABERABERABERABERABERABERABERABGqEAC5yWDChYGrZsmXBWjslU8EYChQBERABERABERABERABERABERABERABERCBBAL6ulwCIAWLgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAgkE5CSKZmRYoiACIiACIiACIiACIiACIiACIiACIiACCQQkJIpAZCCRUAEREAEREAEREAEREAEREAEREAEREAEkglIyZTMSDFEQAREQAREQAREQAREQAREQAREQAREQAQSCEjJlABIwSIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAskEpGRKZqQYIiACIiACIiACIiACIiACIiACIiACIiACCQSkZEoApGAREAEREAEREAEREAEREAEREAEREAEREIFkAlIyJTNSDBEQAREQAREQAREQAREQAREQAREQAREQgQQCUjIlAFKwCIiACIiACIiACIiACIiACIiACIiACIhAMgEpmZIZKYYIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiEACASmZEgApWAREQAREQAREQAREQAREQAREQAREQAREIJmAlEzJjBRDBERABERABERABERABERABERABERABEQggYCUTAmAFCwCIiACIiACIiACIiACIiACIiACIiACIpBMQEqmZEaKIQIiIAIiIAIiIAIiIAIiIAIiIAIiIAIikEBASqYEQAoWAREQAREQAREQAREQAREQAREQAREQARFIJiAlUzIjxRABERABERABERABERABERABERABERABEUggICVTAiAFi4AIiIAIiIAIiIAIiIAIiIAIiIAIiIAIJBOQkimZkWKIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAgkEJCSKQGQgkVABERABERABERABERABERABERABERABJIJSMmUzEgxREAEREAEREAEREAEREAEREAEREAEREAEEghIyZQASMEiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIALJBKRkSmakGCIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAgkEpGRKAKRgERABERABERABERABERABERABERABERCBZAJSMiUzUgwREAEREAEREAEREAEREAEREAEREAEREIEEAlIyJQBSsAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQDIBKZmSGSmGCIiACIiACIiACIiACIiACIiACIiACIhAAgEpmRIAKVgEREAEREAEREAEREAEREAEREAEREAERCCZgJRMyYwUQwREQAREQAREQAREQAREQAREQAREQAREIIGAlEwJgBQsAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiKQTEBKpmRGiiECIiACIiACIiACIiACIiACIiACIiACIpBAoFlCeIOCZ82aZT/++GM2jebNm9vCCy9sLVq0aFC6xV78008/WdOmTW2JJZYo9tLY+KVOLzYTnUwk8Mcff9h3331nrVq1shVWWMG4vySVR2DKlCn29ddf24wZM2y55ZazBRdcsPIKqRJVLIEffvjBfvnlF2vXrp1169bN5pnnr7UR9cWzm+3nn392z9fSSy89V9tx+PDhrhzt27e31q1b55Rl0qRJNmrUKNd+9S3n+PHj7ffff3fvcsYRce1PnC+++MLmn39+6969u40cObJB7/9onnMVsDIXgTlEYMSIETZ9+vRsbvPOO68tssgi1qRJk5KVgDzoDxZffHGXZtzzXLLM5kD6pSxrNaYVvacYuzMnZH7mJXpPNIQD80/y4L4tVjTuKJZY6eMzrpk2bZp17NgxZ37HeBDx/Ubpc1aKpSLQJBNIqRKLpjNmzBj75z//mXOaFwrnzjzzTPfwzwnZbLPN3ATl8ccfL0l2pU6vJIWqsURuu+02u+OOO2zmzJmu5gsttJCdd955tu6669YYicqu7tNPP21XXXWVMcFEmjVrZgcddJD961//quyCq3RznQAKidNOO80GDBiQLQvKicsvv9wpKxH1xbPR7L777k6B89Zbb5Wl3V555RX78ssv7aSTTiqY/vbbb+8Ugvx77rnn5sS98cYb7a677nLKoXfffbdgOvkC7777brvhhhvswQcftOWXX75O+6Pk2n///Q3FEPLMM8/Yfvvt16D3fzTPfGXTeRGoJgI77bST8TyFhXHWcccdZ9ttt11JqkoeKKPvu+8+l14p+/O4PquU6ZcEQI0lEndPtWnTxr1X/D0VvScagmiDDTaw1Vdf3a655prUyWjckRpV2SPusssuNmzYMDviiCPs0EMPzebHOx3FJO9mSWUTKKslk6/63/72N+vZs6dTCLzzzjv24osvGh3Lv//97zlCB6XWfPPNV7K8Sp1eyQpWIwmhLETJxCo1nc3YsWONCQz30wMPPGDLLLNMjZCo7Gq++eabduGFF7r2OPjgg11hmWT27t3bllpqKdtmm20quwIq3VwlcNlllzkFE4OLNddc0yk5brnlFjv++OPdggEr6+qL50wTvfDCC/bJJ58kKpkoDRalr732muuP/XuXtSze+2ErtFKUPNr+lBMF08UXX2ydO3e2Dh066B4pBWilUZMEeH6POeYYV3eeqyeffNLOP/9869q1q7MqLbVEn+eGpB/XZ5Uy/YaUrZavxcL0lFNOcQjGjRtn9957rxsn8o6vj8VRqVlq3FFqog1PD2XSDjvsUBH3R8NrU1spzBElE6ZuaCSR3Xbbza1WvPHGG24QikvdI4884o4nTJjgOhqsHJhAIP/3f/9n6623nr3//vvO5YYJKivZG220kX300Uf2zTff2DrrrGOHH3643XPPPdavXz83qT3xxBPdANML+XjBBI90vvrqK5cPabH6iZUFkhROnHB6/P3www8bk2rqsPbaa7s6tGzZ0rkOnHHGGa4OQ4YMsQ8++CBbvkUXXTRbJv2RjgDm20w0UVJef/31tsACC7gLaWtWQ+6//34766yz3EBoscUWy1rM9OrVy61801EhV155pXPZ4L5Map9i71Huw6irSLraVU8sJpW0DxNOLA9oC6RHjx5uxYpn3iuZos84/BiIJD1TpIUFB/L888/b22+/7dqee+Oiiy6yLl26uJXYzz77zJZcckk7+uijpYBsRLcY/T2DTlaxkNVWW824r/r37++sZWhfxPfFKKT8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n1Ll69fqk1atXlMxSqZabQDVWwREoPQE/ODWf9K+9DkoRREQAREQAREQgXwE9B7OR0bnRUAERKD6CUjJVP1trBqKQM0R4FP3uNfgGikRAREQAREQARGYswT0Hp6zvJWbCIiACFQSASmZKqk1VBYREAEREAEREAEREAEREAEREAEREAERaKQE5mmk5VaxRUAEREAEREAEREAEREAEREAEREAEREAEKoiAlEwV1BgqigiIgAiIgAiIgAiIgAiIgAiIgAiIgAg0VgJSMjXWllO5RUAEREAEREAEREAEREAEREAEREAERKCCCEjJVEGNoaKIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQGMlICVTY205lVsEREAEREAEREAEREAEREAEREAEREAEKoiAlEwV1BgqigiIgAiIgAiIgAiIgAiIgAiIgAiIgAg0VgJSMjXWllO5RUAEREAEREAEREAEREAEREAEREAERKCCCEjJVEGNoaKIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQGMlICVTY205lVsEREAEREAEREAEREAEREAEREAEREAEKoiAlEwV1BgqigiIgAiIgAiIgAiIgAiIgAiIgAiIgAg0VgLNGlLwIUOGNORyXSsCIiACIiACIiACIiACIiACIiACIiACIjCHCXTp0qUsOcqSqSxYlagIiIAIiIAIiIAIiIAIiIAIiIAIiIAI1BaBJplAaqvKqq0IiIAIiIAIiIAIiIAIiIAIiIAIiIAIiECpCciSqdRElZ4IiIAIiIAIiIAIiIAIiIAIiIAIiIAI1CABKZlqsNFVZREQAREQAREQAREQAREQAREQAREQAREoNQEpmUpNVOmJgAiIgAiIgAiIgAiIgAiIgAiIgAiIQA0SkJKpBhtdVRYBERABERABERABERABERABERABERCBUhOQkqnURJWeCIiACIiACIiACIiACIiACIiACIiACNQgASmZarDRVWUREAEREAEREAEREAEREAEREAEREAERKDUBKZlKTVTpiYAIiIAIiIAIiIAIiIAIiIAIiIAIiEANEpCSqQYbXVUWAREQAREQAREQAREQAREQAREQAREQgVITkJKp1ESVngiIgAiIgAiIgAiIgAiIgAiIgAiIgAjUIAEpmWqw0VVlERABERABERCB4gn8+OOPxV+kK0RABERABERABESghgg0q6G6qqoiIAIiIAIiIAI1SOCxxx6zUaNGWbNm6YY906ZNsw022MBWXnnlLK2vv/7aDjnkEHv++edtoYUWqkGKqrIIiIAIiIAIiIAIJBNIN9pKTkcxRGCOEJg1a5ZddtllduKJJ9q8885bkjzfe+89GzNmjG233XYlSU+JiIAIlIZA//797cUXX7RJkybZ8ssvb/vss4+1adMmm/gHH3xgTz31lE2dOtV69Ohhu+++e14lwi233GK///67u7ZJkybWunVrW3fddW211VYrTWHnciqlYDV+/Hi77bbb7Mgjj7T5558/W6Orr77apkyZUqeGW2yxha2xxhp1zk+ePNnuuusuO+qoo1xY37597Y033rCxY8da586dXTt26NChznWciF7LuXzleuGFF+zzzz+vk87JJ59sLVu2zDmPUoj3R9OmTbPnZ86caVdccYWddtppNs88uYbdhEXfMU8++aTtuOOORSmYiqk7BUsb/9tvv7XHH3/cvbdWWmmlOgz8iULPSLHtmjcTBVQtgXzPXtVWWBUrO4FC91Sh9xj998svv2z9+vWziRMnWqdOnWzPPfe0JZZYIrbMN910k/3555/G+yC6uMC4/80337Stt97aVl11Vav28UEsoAo/OWNmxnr3/ckGj55sm/29vQ0bM9m27t7BOrWf1+5+Z4Rt+Y8OtkS73Pd8oSr9OWWG3fvuz3bQ+h1tvhZ/jQPirslkGCfGheSeSxsvOaXqjCF3ueps16qtVSZ4op944gk3qSyVMFj/+OOPS5Wc0mkEBMaNG2dye6nshrrvvvvsggsucEqMvfbay4YPH2677bab/frrr67gKC3OP/9823TTTd35d999184444y8lXrppZeccql79+624oorOqXCCSec4Cb1jV1KwQorn2OOOcYeeuihHIUSfe7iiy9uyyyzTPa32GKLGTzbtm0biw7lhx/UM3jv1auXU+gdfPDBhoXQHnvsYaNHj068lgj5ykUYk43mzZtb165dc34tWrSokzb3CUrIXXbZJfvbaaedXLyePXvmnCcOcVFsehkxYoSzYOI+23vvvWN/1OvBBx/MXlNs3dPGnz59ul188cWu/sOGDatTV3+i0DNSn3bNm5ECqpJAoWevKiusSpWdQKF7Kuk9dtFFF1mfPn1s2223de8q+n3eKfnGcixQPffcc66fjMrtt9/u3mFDhgxxQdU8PojW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9m9o2fPlq/PFE0DBWEjJWHyK1XtFOVjh9oq1YiEFE0R5/qKS9troddHjuI8JROPkO8Y1vz5rbfRdWFumkbi6F7qu2PiF0iKsHO2elKfCRUAERKAcBNSflYNq404TNVCHQCFUKkmrrEobr1TlamzpyJKpsbWYylvxBPr16+fcNbCwkdSPQCkZYrXGJsNffhmYzAYWD7QLk0Msm8rxtbdSlr1+9HSVCMw5AnwSGmVv1FUuTQkacm2a9BVHBERABERABERABERgzhOQkmnOM1eOIiACIiACIiACIiACIiACIiACIiACIlB1BOb61+WqjqgqJAIiIAIiIAIiIAIiIAg4hmYAACAASURBVAIiIAIiIAIiIAI1SEBKphpsdFVZBERABERABERABERABERABERABERABEpNQEqmUhNVeiIgAiIgAiIgAiIgAiIgAiIgAiIgAiJQgwSkZKrBRleVRUAEREAEREAEREAEREAEREAEREAERKDUBKRkKjVRpScCIiACIiACIiACIiACIiACIiACIiACNUhASqYabHRVWQREQAREQAREQAREQAREQAREQAREQARKTUBKplITVXoiIAIiIAIiIAIiIAIiIAIiIAIiIAIiUIMEpGSqwUZXlUVABERABERABERABERABERABERABESg1ASkZCo1UaUnAiIgAiIgAiIgAiIgAiIgAiIgAiIgAjVIQEqmGmx0VVkEREAEREAEREAEREAEREAEREAEREAESk2gWUMSHDJkSEMu17UiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAJzmECXLl3KkmOTTCBlSVmJioAIiIAIiIAIiIAIiIAIiIAIiIAIiIAI1AwBucvVTFOroiIgAiIgAiIgAiIgAiIgAiIgAiIgAiJQPgJSMpWPrVIWAREQAREQAREQAREQAREQAREQAREQgZohICVTzTS1KioCIiACIiACIiACIiACIiACIiACIiAC5SMgJVP52CplERABERABERABERABERABERABERABEagZAlIy1UxTq6IiIAIiIAIiIAIiIAIiIAIiIAIiIAIiUD4CUjKVj61SFgEREAEREAEREAEREAEREAEREAEREIGaISAlU800tSoqAiIgAiIgAiIgAiIgAiIgAiIgAiIgAuUjICVT+dgqZREQAREQAREQAREQAREQAREQAREQARGoGQJSMtVMU6uiIiACIiACIiACIiACIiACIiACIiACIlA+AlIylY+tUhYBERABERABEagiAj/++GMV1UZVEQEREAEREAEREIHSE2hW+iSVogiIgAiIgAiIgAhUDoHHHnvMRo0aZc2apRv2TJs2zTbYYANbeeWVs5X4+uuv7ZBDDrHnn3/eFlpoocqpnEoiAiIgAiIgAiIgAhVEIN1oq4IKrKLUNoFZs2bZZZddZieeeKLNO++8JYHx3nvv2ZgxY2y77bYrSXpKRAREoDQE+vbta2+88YaNHTvWOnfubPvss4916NAhm3j//v3txRdftEmTJtnyyy/vwtu0aROb+S233GK///67C2vSpIm1bt3a1l13XVtttdVi4ze2k0ksPvjgA3vqqads6tSp1qNHD9t9993rKFzGjx9vt912mx155JE2//zzZxFcffXVNmXKlDpItthiC1tjjTXqnJ88ebLddddddtRRR7mwpHYMJxC9lrB85XrhhRfs888/r5P/ySefbC1btsw5j1KI90fTpk2z52fOnGlXXHGFnXbaaTbPPLmG3YRF3zFPPvmk7bjjjkUpmIqpezGsvv32W3v88cfde2ullVaqw8CfKNTuxbZr3kwUULUE8j17VVthVazsBArdU4XeY/TfL7/8svXr188mTpxonTp1sj333NOWWGKJ2DLfdNNN9ueffxrvg+jiAuP+N99807beemtbddVVrdrHB7GAKvzkjJkZ6933Jxs8erJt9vf2NmzMZNu6ewfr1H5eu/udEbblPzrYEu1y3/P5qvT+kLH2+tdjbNL0WdZ14fls1x6LWutW+VUgmQzjxHyp/XU+bbzklKozhtzlqrNdq7ZWmeCJfuKJJ9xEqVTCYP3jjz8uVXJKpxEQGDdunMntpbIbikFfr169nCLo4IMPNixL9thjDxs9erQr+H333WcXXHCBU3LstddeNnz4cNttt93s119/ja3YSy+95JRL3bt3txVXXNEpFU444QSnAGnsksQCRd35559vm266qWP07rvv2hlnnJFTbax8jjnmGHvooYdyFEr0uYsvvrgts8wy2d9iiy1m8Gzbtm0sOpQfflCf1I7RBMLXEpavXIQx2WjevLl17do159eiRYtosq7uKNZ22WWX7G+nnXZy8Xr27JlznjjERXHpZcSIEc6CCXZ777137I/788EHH8xeU2zd08afPn26XXzx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SXMOaxoG//R5+SRfO6a5Nl+a/jx14plEgVaMwAPraT4eEN4DLk0aKNbuv//+Ol/Si7s2X93j4nKu2Pj50vHny9XuSfkqXAREQARKTYD+jIVLxufRvfJKnZfSaxwEUGTg0jZfi6bu11Bhg/DxwX5P7RdoYc2b5veLSxuvoeVprNfPdUumxgpO5a5sAig04r4e4UvNhCK6AXi4RkxmGxJOWuRR7MSlsqkWXzoGAKwexQltFKdgCsctxBDlYaE28umwcS8bwbPnG4MS9nrCxQYrynyS1P4NLXu+fHW+LgHaTVIaAihjCylk65MLbq9YKxZSMJFuXDumvTapXHEfE0i6xofjml+ftTb6Lqwt00hc3QtdV2z8QmkRVo52T8pT4SIgAiJQDgLqz8pBtXGniRqoQ6AQKpWkVValjVeqcjW2dGTJ1NhaTOWteAL9+vVz7hpY2EjqR6CUDLFaY7PoL7/80llx0C5MDrFsKsfX3kpZ9vrR01UiMOcI8ElolL1RV7k0JWjItWnSVxwREAEREAEREAEREIE5T0BKpjnPXDmKgAiIgAiIgAiIgAiIgAiIgAiIgAiIQNURmOtfl6s6oqqQCIiACIiACIiACIiACIiACIiACIiACNQgASmZarDRVWUREAEREAEREAEREAEREAEREAEREAERKDUBKZlKTVTpiYAIiIAIiIAIiIAIiIAIiIAIiIAIiEANEpCSqQYbXVUWAREQAREQAREQAREQAREQAREQAREQgVITkJKp1ESVngiIgAiIgAiIgAiIgAiIgAiIgAiIgAjUIAEpmWqw0VVlERABERABERABERABERABERABERABESg1ASmZSk1U6YmACIiACIiACIiACIiACIiACIiACIhADRKQkqkGG11VFgEREAEREAEREAEREAEREAEREAEREIFSE5CSqdRElZ4IiIAIiIAIiIAIiIAIiIAIiIAIiIAI1CABKZlqsNFVZREQAREQAREQAREQAREQAREQAREQAREoNYFmDUlwyJAhDblc14qACIiACIiACIiACIiACIiACIiACIiACMxhAl26dClLjk0ygZQlZSUqAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiJQMwTkLlczTa2KioAIiIAIiIAIiIAIiIAIiIAIiIAIiED5CEjJVD62SlkEREAEREAEREAEREAEREAEREAEREAEaoaAlEw109SqqAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiUj4CUTOVjq5RFQAREQAREQAREQAREQAREQAREQAREoGYISMlUM02tioqACIiACIiACIiACIiACIiACIiACIhA+QhIyVQ+tkpZBERABERABERABERABERABERABERABGqGgJRMNdPUqqgIiIAIiIAIiIAIiIAIiIAIiIAIiIAIlI+AlEzlY6uURUAEREAEREAEREAEREAEREAEREAERKBmCEjJVDNNrYqKgAiIgAiIgAiIgAiIgAiIgAiIgAiIQPkISMlUPrZKWQREQAREQAREoIoI/Pjjj1VUG1VFBERABERABERABEpPoFnpk1SKIiACIiACIiACIlA5BB577DEbNWqUNWuWbtgzbdo022CDDWzllVfOVuLrr7+2Qw45xJ5//nlbaKGFKqdyKokIiIAIiIAIiIAIVBCBdKOtCiqwilLbBGbNmmWXXXaZnXjiiTbvvPOWBMZ7771nY8aMse22264k6SkRERCB0hDo27evvfHGGzZ27Fjr3Lmz7bPPPtahQ4ds4h988IE99dRTNnXqVOvRo4ftvvvueZUIt9xyi/3+++/u2iZNmljr1q1t3XXXtdVWW600hZ3LqfTv399efPFFmzRpki2//PKOVZs2bYpiNX78eLvtttvsyCOPtPnnnz977dVXX21TpkypU8MtttjC1lhjjTrnJ0+ebHfddZcdddRRLiypHcMJRK8lLF+5XnjhBfv888/r5H/yySdby5Ytc86jFOL90bRp0+z5mTNn2hVXXGGnnXaazTNPrmE3YdF3zJNPPmk77rhjUQqmYupeDKtvv/3WHn/8cffeWmmlleow8CcKPSPFtmveTBRQtQTyPXtVW2FVrOwECt1Thd5j9N8vv/yy9evXzyZOnGidOnWyPffc05ZYYonYMt900032559/Gu+D6OIC4/4333zTtt56a1t11VWt2scHsYAq/OSMmRnr3fcnGzx6sm329/Y2bMxk27p7B+vUfl67+50RtuU/OtgS7XLf8/mq9O7gsdbvuz9s/OQZtnT7VrZrj8Ws/fzN80W3TIZxYt7gbEDaeMkpVWcMuctVZ7tWba0ywRP9xBNPuEllqYTB+scff1yq5JROIyAwbtw4k9tLZTcUg75evXo5RdDBBx9sWJbsscceNnr0aFdwlE/nn3++bbrpprbbbrvZu+++a2eccUbeSr300ktOudS9e3dbccUVnVLhhBNOcAqQxi733XefXXDBBU7hs9dee9nw4cMdk19//TU1K6x8jjnmGHvooYdyFEr0uYsvvrgts8wy2d9iiy1m8Gzbtm0sOpQfflCf1I7RBMLXEpavXIQx2WjevLl17do159eiRYtosu4+QQm5yy67ZH877bSTi9ezZ8+c88QhLso6LyNGjHAWTNxne++9d+yP+/PBBx/MXlNs3dPGnz59ul188cWu/sOGDatTV3+i0DNSn3bNm5ECqpJAoWevKiusSpWdQKF7Kuk9dtFFF1mfPn1s2223de8q+n3GBvnGciy6PPfcc66fjMrtt9/u3mFDhgxxQdU8PojWvbEcP//f0TZgxAQ7cpOlbI3ObWz6zFk2K1D+IK8PHGO/T5yeqioopG5840dbs3Nb23vtxYN0Mnbo3V/amAnx15/39Pf24pezx5mFMkgb9SDnWQAAF2JJREFUr1AaVR8WDDTmqASDXpdfMLHPfPLJJ5kZM2Zk8w+sSXLKwnGgua5TvnAawQCrTnj0RLHxo9fruHIIcL+svvrqmT/++CMTDPozH374YSZY0ahTwAkTJmS++OILFx4oFOqEc2999NFHLp1gxT1z7rnn5sQhzc8++ywzcODAOtdyolB4MAnOBKvgGe478qAstSo//fRTJlgxygQv8hwEsAk/28FqU4aflzQMw20Q7SfinvmhQ4dmglX9DH3GDjvskLn55ptddnFxC7VvKcpeq/dD2nrTnpdeemkmGDzmXBKsWmYeeeQR93ztvPPOmWDwmA0PLHgygWWNa+M4CSxQMsEqaE7Qtddemzn99NPjojeac9yrgSIu89VXX+WU+aCDDnL3eBpWzz77bGarrbbKvPbaa65//e233wrW/+yzz84EE4LYOMECgGsb+t2kdowmEL6WsKRyHX300XXqHU2z0DH5Ud+ff/65ULRMoODMwPPOO+/MBKvw7vf6669nDjvssOwx5wKLu+z7KE3dYRRMulzeaeL7Ql5//fWZe+65J7PvvvtmnnnmmWzZw+mlafdopQu1azSujqubQNKzV921V+3KQaDQPZX0HqN/XHPNNTOffvppTtGChabM/fffH1vcwMozc84552QCz4ec8GARJsNYgv4zcKN2YdU6PogF0whOjpkwLXPZC0MyN70xLDNq/NTMzKD9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gAABAgQIECBAgAABIZM2QIAAAQIECBAgQIAAAQIECBAgUCwgZComVAEBAgQIECBAgAABAgQIECBAgICQSRsgQIAAAQIECBAgQIAAAQIECBAoFhAyFROqgAABAgQIECBAgAABAgQIECBAQMikDRAgQIAAAQIECBAgQIAAAQIECBQLCJmKCVVAgAABAgQIECBAgAABAgQIECAgZNIGCBAgQIAAAQIECBAgQIAAAQIEigWETMWEKiBAgAABAgQIECBAgAABAgQIEBAyaQMECBAgQIAAAQIECBAgQIAAAQLFAkKmYkIVECBAgAABAgQIECBAgAABAgQICJm0AQIECBAgQIAAAQIECBAgQIAAgWIBIVMxoQoIECBAgAABAgQIECBAgAABAgSETNoAAQIECBAgQIAAAQIECBAgQIBAsYCQqZhQBQQIECBAgAABAgQIECBAgAABAkImbYAAAQIECBAgQIAAAQIECBAgQKBYQMhUTKgCAgQIECBAgAABAgQIECBAgAABIZM2QIAAAQIECBAgQIAAAQIECBAgUCwgZComVAEBAgQIECBAgAABAgQIECBAgICQSRsgQIAAAQIECBAgQIAAAQIECBAoFhAyFROqgAABAgQIECBAgAABAgQIECBAQMikDRAgQIAAAQIECBAgQIAAAQIECBQLCJmKCVVAgAABAgQIECBAgAABAgQIECAgZNIGCBAgQIAAAQIECBAgQIAAAQIEigWETMWEKiBAgAABAgQIECBAgAABAgQIEBAyaQMECBAgQIAAAQIECBAgQIAAAQLFAkKmYkIVECBAgAABAgQIECBAgAABAgQICJm0AQIECBAgQIAAAQIECBAgQIAAgWIBIVMxoQoIECBAgAABAgQIECBAgAABAgSETNoAAQIECBAgQIAAAQIECBAgQIBAsYCQqZhQBQQIECBAgAABAgQIECBAgAABAkImbYAAAQIECBAgQIAAAQIECBAgQKBYQMhUTKgCAgQIECBAgAABAgQIECBAgAABIZM2QIAAAQIECBAgQIAAAQIECBAgUCwgZComVAEBAgQIECBAgAABAgQIECBAgICQSRsgQIAAAQIECBAgQIAAAQIECBAoFhAyFROqgAABAgQIECBAgAABAgQIECBAQMikDRAgQIAAAQIECBAgQIAAAQIECBQLCJmKCVVAgAABAgQIECBAgAABAgQIECAgZNIGCBAgQIAAAQIECBAgQIAAAQIEigWETMWEKiBAgAABAgQIECBAgAABAgQIEPgXFfc72OtFFmMAAAAASUVORK5CYII=" alt="" />


 import java.io.IOException;
import java.util.StringTokenizer;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileSplit;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; public class InvertedIndex{
private static class Map extends Mapper<Object, Text, Text, Text>{
private Text keyInfo =new Text(); //存单词与uri
private Text valueInfo =new Text(); //存词频
private FileSplit split; //存储split对象
@Override
protected void map(Object key, Text value, Mapper<Object, Text, Text, Text>.Context context)
throws IOException, InterruptedException {
// TODO Auto-generated method stub
split=(FileSplit) context.getInputSplit();
StringTokenizer itr=new StringTokenizer(value.toString());
while (itr.hasMoreTokens()) {
int splitIndex=split.getPath().toString().indexOf("file");
keyInfo.set(itr.nextToken()+":"+split.getPath().toString().substring(splitIndex));
valueInfo.set("1");
context.write(keyInfo, valueInfo);
}
}
} public static class Combine extends Reducer<Text, Text, Text, Text>{ //相同的key,value累加
private Text info=new Text();
@Override
protected void reduce(Text key, Iterable<Text> values, Reducer<Text, Text, Text, Text>.Context context)
throws IOException, InterruptedException {
// TODO Auto-generated method stub
int sum=0;
for(Text value:values){
sum+=Integer.parseInt(value.toString());
}
int splitIndex=key.toString().indexOf(":");
info.set(key.toString().substring(splitIndex+1)+":"+sum); //与下一行顺序不能调换
key.set(key.toString().substring(0, splitIndex));
context.write(key, info);
}
}
public static class Reduce extends Reducer<Text, Text, Text, Text>{
private Text result=new Text();
@Override
protected void reduce(Text key, Iterable<Text> values, Reducer<Text, Text, Text, Text>.Context context)
throws IOException, InterruptedException {
// TODO Auto-generated method stub
String file=new String();
for(Text value:values){
file+=value.toString()+";";
}
result.set(file);
context.write(key, result);
}
}
public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
Configuration conf=new Configuration();
@SuppressWarnings("deprecation")
Job job=new Job(conf,"invertedIndex");
job.setJarByClass(InvertedIndex.class);
job.setMapperClass(Map.class);
job.setCombinerClass(Combine.class);
job.setReducerClass(Reduce.class);
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(Text.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(Text.class);
FileInputFormat.setInputPaths(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
System.exit(job.waitForCompletion(true)?0:1);
}
}

 2017-03-15 22:16:27,071 WARN [org.apache.hadoop.util.NativeCodeLoader] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2017-03-15 22:16:27,748 INFO [org.apache.hadoop.conf.Configuration.deprecation] - session.id is deprecated. Instead, use dfs.metrics.session-id
2017-03-15 22:16:27,749 INFO [org.apache.hadoop.metrics.jvm.JvmMetrics] - Initializing JVM Metrics with processName=JobTracker, sessionId=
2017-03-15 22:16:28,058 WARN [org.apache.hadoop.mapreduce.JobResourceUploader] - Hadoop command-line option parsing not performed. Implement the Tool interface and execute your application with ToolRunner to remedy this.
2017-03-15 22:16:28,061 WARN [org.apache.hadoop.mapreduce.JobResourceUploader] - No job jar file set. User classes may not be found. See Job or Job#setJar(String).
2017-03-15 22:16:28,124 INFO [org.apache.hadoop.mapreduce.lib.input.FileInputFormat] - Total input paths to process : 3
2017-03-15 22:16:28,171 INFO [org.apache.hadoop.mapreduce.JobSubmitter] - number of splits:3
2017-03-15 22:16:28,289 INFO [org.apache.hadoop.mapreduce.JobSubmitter] - Submitting tokens for job: job_local1466554694_0001
2017-03-15 22:16:28,463 INFO [org.apache.hadoop.mapreduce.Job] - The url to track the job: http://localhost:8080/
2017-03-15 22:16:28,468 INFO [org.apache.hadoop.mapreduce.Job] - Running job: job_local1466554694_0001
2017-03-15 22:16:28,473 INFO [org.apache.hadoop.mapred.LocalJobRunner] - OutputCommitter set in config null
2017-03-15 22:16:28,479 INFO [org.apache.hadoop.mapreduce.lib.output.FileOutputCommitter] - File Output Committer Algorithm version is 1
2017-03-15 22:16:28,482 INFO [org.apache.hadoop.mapred.LocalJobRunner] - OutputCommitter is org.apache.hadoop.mapreduce.lib.output.FileOutputCommitter
2017-03-15 22:16:28,571 INFO [org.apache.hadoop.mapred.LocalJobRunner] - Waiting for map tasks
2017-03-15 22:16:28,571 INFO [org.apache.hadoop.mapred.LocalJobRunner] - Starting task: attempt_local1466554694_0001_m_000000_0
2017-03-15 22:16:28,609 INFO [org.apache.hadoop.mapreduce.lib.output.FileOutputCommitter] - File Output Committer Algorithm version is 1
2017-03-15 22:16:28,621 INFO [org.apache.hadoop.mapred.Task] - Using ResourceCalculatorProcessTree : [ ]
2017-03-15 22:16:28,624 INFO [org.apache.hadoop.mapred.MapTask] - Processing split: hdfs://localhost:9000/user/hadoop/input/file2.txt:0+32
2017-03-15 22:16:28,679 INFO [org.apache.hadoop.mapred.MapTask] - (EQUATOR) 0 kvi 26214396(104857584)
2017-03-15 22:16:28,679 INFO [org.apache.hadoop.mapred.MapTask] - mapreduce.task.io.sort.mb: 100
2017-03-15 22:16:28,679 INFO [org.apache.hadoop.mapred.MapTask] - soft limit at 83886080
2017-03-15 22:16:28,679 INFO [org.apache.hadoop.mapred.MapTask] - bufstart = 0; bufvoid = 104857600
2017-03-15 22:16:28,679 INFO [org.apache.hadoop.mapred.MapTask] - kvstart = 26214396; length = 6553600
2017-03-15 22:16:28,683 INFO [org.apache.hadoop.mapred.MapTask] - Map output collector class = org.apache.hadoop.mapred.MapTask$MapOutputBuffer
2017-03-15 22:16:28,754 INFO [org.apache.hadoop.mapred.LocalJobRunner] -
2017-03-15 22:16:28,756 INFO [org.apache.hadoop.mapred.MapTask] - Starting flush of map output
2017-03-15 22:16:28,757 INFO [org.apache.hadoop.mapred.MapTask] - Spilling map output
2017-03-15 22:16:28,757 INFO [org.apache.hadoop.mapred.MapTask] - bufstart = 0; bufend = 92; bufvoid = 104857600
2017-03-15 22:16:28,757 INFO [org.apache.hadoop.mapred.MapTask] - kvstart = 26214396(104857584); kvend = 26214380(104857520); length = 17/6553600
2017-03-15 22:16:28,770 INFO [org.apache.hadoop.mapred.MapTask] - Finished spill 0
2017-03-15 22:16:28,774 INFO [org.apache.hadoop.mapred.Task] - Task:attempt_local1466554694_0001_m_000000_0 is done. And is in the process of committing
2017-03-15 22:16:28,785 INFO [org.apache.hadoop.mapred.LocalJobRunner] - map
2017-03-15 22:16:28,785 INFO [org.apache.hadoop.mapred.Task] - Task 'attempt_local1466554694_0001_m_000000_0' done.
2017-03-15 22:16:28,785 INFO [org.apache.hadoop.mapred.LocalJobRunner] - Finishing task: attempt_local1466554694_0001_m_000000_0
2017-03-15 22:16:28,786 INFO [org.apache.hadoop.mapred.LocalJobRunner] - Starting task: attempt_local1466554694_0001_m_000001_0
2017-03-15 22:16:28,791 INFO [org.apache.hadoop.mapreduce.lib.output.FileOutputCommitter] - File Output Committer Algorithm version is 1
2017-03-15 22:16:28,792 INFO [org.apache.hadoop.mapred.Task] - Using ResourceCalculatorProcessTree : [ ]
2017-03-15 22:16:28,793 INFO [org.apache.hadoop.mapred.MapTask] - Processing split: hdfs://localhost:9000/user/hadoop/input/file3.txt:0+30
2017-03-15 22:16:28,823 INFO [org.apache.hadoop.mapred.MapTask] - (EQUATOR) 0 kvi 26214396(104857584)
2017-03-15 22:16:28,823 INFO [org.apache.hadoop.mapred.MapTask] - mapreduce.task.io.sort.mb: 100
2017-03-15 22:16:28,823 INFO [org.apache.hadoop.mapred.MapTask] - soft limit at 83886080
2017-03-15 22:16:28,823 INFO [org.apache.hadoop.mapred.MapTask] - bufstart = 0; bufvoid = 104857600
2017-03-15 22:16:28,823 INFO [org.apache.hadoop.mapred.MapTask] - kvstart = 26214396; length = 6553600
2017-03-15 22:16:28,824 INFO [org.apache.hadoop.mapred.MapTask] - Map output collector class = org.apache.hadoop.mapred.MapTask$MapOutputBuffer
2017-03-15 22:16:28,831 INFO [org.apache.hadoop.mapred.LocalJobRunner] -
2017-03-15 22:16:28,832 INFO [org.apache.hadoop.mapred.MapTask] - Starting flush of map output
2017-03-15 22:16:28,832 INFO [org.apache.hadoop.mapred.MapTask] - Spilling map output
2017-03-15 22:16:28,832 INFO [org.apache.hadoop.mapred.MapTask] - bufstart = 0; bufend = 78; bufvoid = 104857600
2017-03-15 22:16:28,832 INFO [org.apache.hadoop.mapred.MapTask] - kvstart = 26214396(104857584); kvend = 26214384(104857536); length = 13/6553600
2017-03-15 22:16:28,834 INFO [org.apache.hadoop.mapred.MapTask] - Finished spill 0
2017-03-15 22:16:28,835 INFO [org.apache.hadoop.mapred.Task] - Task:attempt_local1466554694_0001_m_000001_0 is done. And is in the process of committing
2017-03-15 22:16:28,839 INFO [org.apache.hadoop.mapred.LocalJobRunner] - map
2017-03-15 22:16:28,839 INFO [org.apache.hadoop.mapred.Task] - Task 'attempt_local1466554694_0001_m_000001_0' done.
2017-03-15 22:16:28,839 INFO [org.apache.hadoop.mapred.LocalJobRunner] - Finishing task: attempt_local1466554694_0001_m_000001_0
2017-03-15 22:16:28,839 INFO [org.apache.hadoop.mapred.LocalJobRunner] - Starting task: attempt_local1466554694_0001_m_000002_0
2017-03-15 22:16:28,842 INFO [org.apache.hadoop.mapreduce.lib.output.FileOutputCommitter] - File Output Committer Algorithm version is 1
2017-03-15 22:16:28,843 INFO [org.apache.hadoop.mapred.Task] - Using ResourceCalculatorProcessTree : [ ]
2017-03-15 22:16:28,844 INFO [org.apache.hadoop.mapred.MapTask] - Processing split: hdfs://localhost:9000/user/hadoop/input/file1.txt:0+20
2017-03-15 22:16:28,888 INFO [org.apache.hadoop.mapred.MapTask] - (EQUATOR) 0 kvi 26214396(104857584)
2017-03-15 22:16:28,888 INFO [org.apache.hadoop.mapred.MapTask] - mapreduce.task.io.sort.mb: 100
2017-03-15 22:16:28,888 INFO [org.apache.hadoop.mapred.MapTask] - soft limit at 83886080
2017-03-15 22:16:28,888 INFO [org.apache.hadoop.mapred.MapTask] - bufstart = 0; bufvoid = 104857600
2017-03-15 22:16:28,888 INFO [org.apache.hadoop.mapred.MapTask] - kvstart = 26214396; length = 6553600
2017-03-15 22:16:28,889 INFO [org.apache.hadoop.mapred.MapTask] - Map output collector class = org.apache.hadoop.mapred.MapTask$MapOutputBuffer
2017-03-15 22:16:28,893 INFO [org.apache.hadoop.mapred.LocalJobRunner] -
2017-03-15 22:16:28,894 INFO [org.apache.hadoop.mapred.MapTask] - Starting flush of map output
2017-03-15 22:16:28,894 INFO [org.apache.hadoop.mapred.MapTask] - Spilling map output
2017-03-15 22:16:28,894 INFO [org.apache.hadoop.mapred.MapTask] - bufstart = 0; bufend = 56; bufvoid = 104857600
2017-03-15 22:16:28,894 INFO [org.apache.hadoop.mapred.MapTask] - kvstart = 26214396(104857584); kvend = 26214388(104857552); length = 9/6553600
2017-03-15 22:16:28,895 INFO [org.apache.hadoop.mapred.MapTask] - Finished spill 0
2017-03-15 22:16:28,896 INFO [org.apache.hadoop.mapred.Task] - Task:attempt_local1466554694_0001_m_000002_0 is done. And is in the process of committing
2017-03-15 22:16:28,899 INFO [org.apache.hadoop.mapred.LocalJobRunner] - map
2017-03-15 22:16:28,899 INFO [org.apache.hadoop.mapred.Task] - Task 'attempt_local1466554694_0001_m_000002_0' done.
2017-03-15 22:16:28,899 INFO [org.apache.hadoop.mapred.LocalJobRunner] - Finishing task: attempt_local1466554694_0001_m_000002_0
2017-03-15 22:16:28,899 INFO [org.apache.hadoop.mapred.LocalJobRunner] - map task executor complete.
2017-03-15 22:16:28,901 INFO [org.apache.hadoop.mapred.LocalJobRunner] - Waiting for reduce tasks
2017-03-15 22:16:28,902 INFO [org.apache.hadoop.mapred.LocalJobRunner] - Starting task: attempt_local1466554694_0001_r_000000_0
2017-03-15 22:16:28,914 INFO [org.apache.hadoop.mapreduce.lib.output.FileOutputCommitter] - File Output Committer Algorithm version is 1
2017-03-15 22:16:28,915 INFO [org.apache.hadoop.mapred.Task] - Using ResourceCalculatorProcessTree : [ ]
2017-03-15 22:16:28,919 INFO [org.apache.hadoop.mapred.ReduceTask] - Using ShuffleConsumerPlugin: org.apache.hadoop.mapreduce.task.reduce.Shuffle@4fb755c9
2017-03-15 22:16:28,932 INFO [org.apache.hadoop.mapreduce.task.reduce.MergeManagerImpl] - MergerManager: memoryLimit=1945842432, maxSingleShuffleLimit=486460608, mergeThreshold=1284256000, ioSortFactor=10, memToMemMergeOutputsThreshold=10
2017-03-15 22:16:28,934 INFO [org.apache.hadoop.mapreduce.task.reduce.EventFetcher] - attempt_local1466554694_0001_r_000000_0 Thread started: EventFetcher for fetching Map Completion Events
2017-03-15 22:16:28,980 INFO [org.apache.hadoop.mapreduce.task.reduce.LocalFetcher] - localfetcher#1 about to shuffle output of map attempt_local1466554694_0001_m_000002_0 decomp: 64 len: 68 to MEMORY
2017-03-15 22:16:28,984 INFO [org.apache.hadoop.mapreduce.task.reduce.InMemoryMapOutput] - Read 64 bytes from map-output for attempt_local1466554694_0001_m_000002_0
2017-03-15 22:16:28,986 INFO [org.apache.hadoop.mapreduce.task.reduce.MergeManagerImpl] - closeInMemoryFile -> map-output of size: 64, inMemoryMapOutputs.size() -> 1, commitMemory -> 0, usedMemory ->64
2017-03-15 22:16:28,991 INFO [org.apache.hadoop.mapreduce.task.reduce.LocalFetcher] - localfetcher#1 about to shuffle output of map attempt_local1466554694_0001_m_000001_0 decomp: 64 len: 68 to MEMORY
2017-03-15 22:16:28,992 INFO [org.apache.hadoop.mapreduce.task.reduce.InMemoryMapOutput] - Read 64 bytes from map-output for attempt_local1466554694_0001_m_000001_0
2017-03-15 22:16:28,992 INFO [org.apache.hadoop.mapreduce.task.reduce.MergeManagerImpl] - closeInMemoryFile -> map-output of size: 64, inMemoryMapOutputs.size() -> 2, commitMemory -> 64, usedMemory ->128
2017-03-15 22:16:28,993 INFO [org.apache.hadoop.mapreduce.task.reduce.LocalFetcher] - localfetcher#1 about to shuffle output of map attempt_local1466554694_0001_m_000000_0 decomp: 87 len: 91 to MEMORY
2017-03-15 22:16:28,994 INFO [org.apache.hadoop.mapreduce.task.reduce.InMemoryMapOutput] - Read 87 bytes from map-output for attempt_local1466554694_0001_m_000000_0
2017-03-15 22:16:28,994 INFO [org.apache.hadoop.mapreduce.task.reduce.MergeManagerImpl] - closeInMemoryFile -> map-output of size: 87, inMemoryMapOutputs.size() -> 3, commitMemory -> 128, usedMemory ->215
2017-03-15 22:16:28,994 INFO [org.apache.hadoop.mapreduce.task.reduce.EventFetcher] - EventFetcher is interrupted.. Returning
2017-03-15 22:16:28,995 INFO [org.apache.hadoop.mapred.LocalJobRunner] - 3 / 3 copied.
2017-03-15 22:16:28,995 INFO [org.apache.hadoop.mapreduce.task.reduce.MergeManagerImpl] - finalMerge called with 3 in-memory map-outputs and 0 on-disk map-outputs
2017-03-15 22:16:29,004 INFO [org.apache.hadoop.mapred.Merger] - Merging 3 sorted segments
2017-03-15 22:16:29,005 INFO [org.apache.hadoop.mapred.Merger] - Down to the last merge-pass, with 3 segments left of total size: 183 bytes
2017-03-15 22:16:29,006 INFO [org.apache.hadoop.mapreduce.task.reduce.MergeManagerImpl] - Merged 3 segments, 215 bytes to disk to satisfy reduce memory limit
2017-03-15 22:16:29,006 INFO [org.apache.hadoop.mapreduce.task.reduce.MergeManagerImpl] - Merging 1 files, 215 bytes from disk
2017-03-15 22:16:29,007 INFO [org.apache.hadoop.mapreduce.task.reduce.MergeManagerImpl] - Merging 0 segments, 0 bytes from memory into reduce
2017-03-15 22:16:29,007 INFO [org.apache.hadoop.mapred.Merger] - Merging 1 sorted segments
2017-03-15 22:16:29,008 INFO [org.apache.hadoop.mapred.Merger] - Down to the last merge-pass, with 1 segments left of total size: 203 bytes
2017-03-15 22:16:29,008 INFO [org.apache.hadoop.mapred.LocalJobRunner] - 3 / 3 copied.
2017-03-15 22:16:29,049 INFO [org.apache.hadoop.conf.Configuration.deprecation] - mapred.skip.on is deprecated. Instead, use mapreduce.job.skiprecords
2017-03-15 22:16:29,186 INFO [org.apache.hadoop.mapred.Task] - Task:attempt_local1466554694_0001_r_000000_0 is done. And is in the process of committing
2017-03-15 22:16:29,190 INFO [org.apache.hadoop.mapred.LocalJobRunner] - 3 / 3 copied.
2017-03-15 22:16:29,190 INFO [org.apache.hadoop.mapred.Task] - Task attempt_local1466554694_0001_r_000000_0 is allowed to commit now
2017-03-15 22:16:29,209 INFO [org.apache.hadoop.mapreduce.lib.output.FileOutputCommitter] - Saved output of task 'attempt_local1466554694_0001_r_000000_0' to hdfs://localhost:9000/user/hadoop/output/_temporary/0/task_local1466554694_0001_r_000000
2017-03-15 22:16:29,210 INFO [org.apache.hadoop.mapred.LocalJobRunner] - reduce > reduce
2017-03-15 22:16:29,210 INFO [org.apache.hadoop.mapred.Task] - Task 'attempt_local1466554694_0001_r_000000_0' done.
2017-03-15 22:16:29,210 INFO [org.apache.hadoop.mapred.LocalJobRunner] - Finishing task: attempt_local1466554694_0001_r_000000_0
2017-03-15 22:16:29,210 INFO [org.apache.hadoop.mapred.LocalJobRunner] - reduce task executor complete.
2017-03-15 22:16:29,473 INFO [org.apache.hadoop.mapreduce.Job] - Job job_local1466554694_0001 running in uber mode : false
2017-03-15 22:16:29,474 INFO [org.apache.hadoop.mapreduce.Job] - map 100% reduce 100%
2017-03-15 22:16:29,475 INFO [org.apache.hadoop.mapreduce.Job] - Job job_local1466554694_0001 completed successfully
2017-03-15 22:16:29,487 INFO [org.apache.hadoop.mapreduce.Job] - Counters: 35
File System Counters
FILE: Number of bytes read=4131
FILE: Number of bytes written=1128147
FILE: Number of read operations=0
FILE: Number of large read operations=0
FILE: Number of write operations=0
HDFS: Number of bytes read=258
HDFS: Number of bytes written=165
HDFS: Number of read operations=33
HDFS: Number of large read operations=0
HDFS: Number of write operations=6
Map-Reduce Framework
Map input records=3
Map output records=12
Map output bytes=226
Map output materialized bytes=227
Input split bytes=342
Combine input records=12
Combine output records=10
Reduce input groups=6
Reduce shuffle bytes=227
Reduce input records=10
Reduce output records=6
Spilled Records=20
Shuffled Maps =3
Failed Shuffles=0
Merged Map outputs=3
GC time elapsed (ms)=0
Total committed heap usage (bytes)=1592262656
Shuffle Errors
BAD_ID=0
CONNECTION=0
IO_ERROR=0
WRONG_LENGTH=0
WRONG_MAP=0
WRONG_REDUCE=0
File Input Format Counters
Bytes Read=82
File Output Format Counters
Bytes Written=165

结果:

 Hello    file3.txt:1;
MapReduce file3.txt:2;file1.txt:1;file2.txt:1;
bye file3.txt:1;
is file1.txt:1;file2.txt:2;
powerful file2.txt:1;
simple file2.txt:1;file1.txt:1;

aaarticlea/png;base64,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" alt="" />

MapReduce ----倒排索引的更多相关文章

  1. 【Hadoop离线基础总结】MapReduce倒排索引建立

    MapReduce倒排索引建立 求某些单词在文章中出现多少次 有三个文档的内容,求hello,tom,jerry三个单词在其中各出现多少次 hello tom hello jerry hello to ...

  2. 大数据学习——mapreduce倒排索引

    数据 a.txt hello jerry hello tom b.txt allen tom allen jerry allen hello c.txt hello jerry hello tom 1 ...

  3. mapreduce 倒排索引的建立

    大道至简 http://blog.csdn.net/hguisu/article/details/7969757 1.map的输入 key: 文档 id   value: 文档内容 输出: key   ...

  4. 使用MapReduce实现一些经典的案例

    在工作中,很多时候都是用hive或pig来自动化执行mr统计,但是我们不能忘记原始的mr.本文记录了一些通过mr来完成的经典的案例,有倒排索引.数据去重等,需要掌握. 一.使用mapreduce实现倒 ...

  5. MapReduce实例-倒排索引

    环境: Hadoop1.x,CentOS6.5,三台虚拟机搭建的模拟分布式环境 数据:任意数量.格式的文本文件(我用的四个.java代码文件) 方案目标: 根据提供的文本文件,提取出每个单词在哪个文件 ...

  6. [置顶] MapReduce 编程之 倒排索引

    本文调试环境: ubuntu 10.04 , hadoop-1.0.2 hadoop装的是伪分布模式,就是只有一个节点,集namenode, datanode, jobtracker, tasktra ...

  7. mapreduce (三) MapReduce实现倒排索引(二)

    hadoop api http://hadoop.apache.org/docs/r1.0.4/api/org/apache/hadoop/mapreduce/Reducer.html 改变一下需求: ...

  8. MapReduce的倒排索引

    MapReduce的倒排索引 索引: 什么是索引:索引(Index)是帮助数据库高效获取数据的数据结构.索引是在基于数据库表创建的,它包含一个表中某些列的值以及记录对应的地址,并且把这些值存储在一个数 ...

  9. MapReduce中的倒排索引

    0.倒排索引资料: http://blog.csdn.net/pzasdq/article/details/51442856 1.三个日志源文件: a.txt hello tom hello jerr ...

随机推荐

  1. Flex(ActionScript)与JavaScript交互的两种方式示例

    随着各单位部门信息化进程的不断发展,互通互联.共享协调不断的被越来越多的客户所重视.很多新项目都要去必须能够集成已有的早期系统,至少也要能够实现交互对接.今天跟大家分享的是系统对接中ActionScr ...

  2. 编写高质量代码改善java程序的151个建议——[1-3]基础?亦是基础

    原创地址:   http://www.cnblogs.com/Alandre/  (泥沙砖瓦浆木匠),需要转载的,保留下! Thanks The reasonable man adapts himse ...

  3. <数据结构> 队列[转]

    队列(queue)是一个简单而常见的数据结构.队列也是有序的元素集合.队列最大的特征是First In, First Out (FIFO,先进先出),即先进入队列的元素,先被取出.这一点与栈(stac ...

  4. Mycat - 实现数据库的读写分离与高可用

    前言 开心一刻 上语文课,不小心睡着了,坐在边上的同桌突然叫醒了我,并小声说道:“读课文第三段”.我立马起身大声读了起来.正在黑板写字的老师吓了一跳,老师郁闷的看着我,问道:“同学有什么问题吗?”,我 ...

  5. js中对象和对象创建方法

    这一次我们来说一说在JavaScript中经常会用到的一个复杂基本类型,对象,先从对象的属性讲起,再讲对象的创建方法,基本涵盖了创建对象的各种方法,大家一起学习呀~ 一.对象 要掌握对象的使用及继承, ...

  6. 监控MySQL组复制

    使用 Perfomance Schema 中的表来监控组复制,假定你的MySQL编译时已经启动了 Performance Schema 表.组复制将添加如下两张 P_S 表: performance_ ...

  7. 前端(一)之 HTML

    前端之 HTML 前言 python 基础.网络编程.并发编程与数据库要开始告一段落了,从现在开始进入前端的学习.前端的东西多且杂,需要好好地练习. 什么是前端 前端即网站前台部分,运行在 PC 端, ...

  8. 特征脸是怎么提取的之主成分分析法PCA

    机器学习笔记 多项式回归这一篇中,我们讲到了如何构造新的特征,相当于对样本数据进行升维. 那么相应的,我们肯定有数据的降维.那么现在思考两个问题 为什么需要降维 为什么可以降维 第一个问题很好理解,假 ...

  9. Wpf学习20180605

    Windows Presentation Foundation 窗口展示框架 WPF. 与winform界面程序比较,我认为最大的区别是‘与分辨率无关’这个特性. 传统winform程序在低分辨率的电 ...

  10. 12 Linux Which Command, Whatis Command, Whereis Command Examples

    This Linux tutorial will explain the three "W" commands. The three "W"s are what ...