结合网上多份文档,不断反复的修正hadoop启动和运行过程中出现的问题,终于把Hadoop2.5.2伪分布式安装起来,跑通了wordcount例子。Hadoop的安装复杂性的体现之一是,Hadoop的安装文档非常多,但是能一个文档走下来的少之又少,尤其是Hadoop不同版本的配置差异非常的大。Hadoop2.5.2于前两天发布,但是它的配置跟2.5.0,2.5.1没有分别。
系统环境: Ubuntu 12.04 LTS x86_32

一、创建用户组和用户

  • 创建用户组,为系统添加一个用户组hadoop
Java代码  
  1. sudo addgroup hadoop
  • 创建用户,为系统添加一个用户hadoop
Java代码  
  1. useradd -g hadoop hadoop
  • 使用hadoop用户登陆
Java代码  
  1. su hadoop

二、使用SSH免密码登录

  • 执行如下命令,生成ssh的密钥,创建的key的路径是/home/hadoop/.ssh/id_rsa
Java代码  
  1. ssh-keygen -t rsa -P ""
  • 将 /home/hadoop/.ssh/id_rsa.pub中的内容追加到/home/hadoop/.ssh/authorized_keys中,保存
  • 执行ssh localhost,验证无密码即可登陆

三、禁用IPv6

  • 执行如下命令查看当前IPv6是否禁用,1表示禁用,0表示未禁用,默认是0
Java代码  
  1. cat /proc/sys/net/ipv6/conf/all/disable_ipv6
  • 编辑如下文件,添加三行,禁用IPv6
Java代码  
  1. sudo vim /etc/sysctl.conf
Java代码  
  1. net.ipv6.conf.all.disable_ipv6 = 1
  2. net.ipv6.conf.default.disable_ipv6 = 1
  3. net.ipv6.conf.lo.disable_ipv6 = 1
  • 重启机器,再次查看IPv6是否禁用

四、安装配置JDK

  • 编辑/etc/profile文件,设置JAVA相关的系统变量
Java代码  
  1. export JAVA_HOME=/software/devsoftware/jdk1.7.0_55
  2. export PATH=$JAVA_HOME/bin:$PATH

五、安装配置Hadoop2.5.2

  • 编辑/etc/profile文件,设置Hadoop相关的系统变量
Java代码  
  1. export HADOOP_HOME=/home/hadoop/hadoop-2.5.2
  2. export PATH=$HADOOP_HOME/bin:$PATH
  • 执行如下使上面配置的系统变量生效
Java代码  
  1. source /etc/profile
  • 将JDK设置到Hadoop的环境脚本/home/hadoop/hadoop-2.5.2/etc/hadoop/hadoop-env.sh中,追加一行
Java代码  
  1. export JAVA_HOME=/software/devsoftware/jdk1.7.0_55

六、Hadoop2.5.2配置文件设置

Hadoop2.5.2有四个配置文件需要配置,它们都位于/home/hadoop/hadoop-2.5.2/etc/hadoop目录下。四个文件分别是
  • core-site.xml
  • yarn-site.xml
  • mapred-site.xml
  • hdfs-site.xml

这写配置文件中有些需要手工创建目录,有些需要根据系统的实际情况,设置hostname,hostname不能是IP或者localhost,需要在/etc/hosts中进行设置。需要补充一点,有几个文档指出,127.0.0.1最好只跟一个hostname(即Hadoop用到的)绑定,把其余的注释掉。这个究竟是否产生影响,没有测,只是按照网上的说法,只保留一个hostname

6.1 core-site.xml配置

Xml代码  
  1. <configuration>
  2. <property>
  3. <name>hadoop.tmp.dir</name>
  4. <!--目录必须手动创建出来-->
  5. <value>/home/hadoop/data/tmp</value>
  6. <description>A base for other temporary directories.</description>
  7. </property>
  8. <!--file system properties-->
  9. <property>
  10. <name>fs.defaultFS</name>
  11. <!--HDFS的服务地址,只能使用域名,不能设置为IP或者localhost-->
  12. <value>hdfs://hostname:9000</value>
  13. </property>
  14. <property>
  15. <!--使用Hadoop自带的so库-->
  16. <name>hadoop.native.lib</name>
  17. <value>true</value>
  18. <description>Should native hadoop libraries, if present, be used.</description>
  19. </property>
  20. </configuration>

6.2 mapred-site.xml配置

 mapred-site.xml文件默认不存在,使用cp命令从mapred-site.xml.template拷贝一份
Java代码  
  1. cp mapred-site.xml.template mapred-site.xml
做如下设置,
Xml代码  
  1. <configuration>
  2. <property>
  3. <name>mapreduce.framework.name</name>
  4. <!--yarn全是小写,不是Yarn-->
  5. <value>yarn</value>
  6. </property>
  7. </configuration>

6.3 yarn-site.xml配置

Xml代码  
  1. <configuration>
  2. <!-- Site specific YARN configuration properties -->
  3. <property>
  4. <!--yarn是小写,或许大些Y也可以-->
  5. <name>yarn.nodemanager.aux-services</name>
  6. <!--不是mapreduce.shuffle-->
  7. <value>mapreduce_shuffle</value>
  8. </property>
  9. <property>
  10. <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
  11. <value>org.apache.hadoop.mapred.ShuffleHandler</value>
  12. </property>
  13. <property>
  14. <description>The address of the applications manager interface in the RM.</description>
  15. <name>Yarn.resourcemanager.address</name>
  16. <!--根据实际情况,设置hostname域名-->
  17. <value>hostname:18040</value>
  18. </property>
  19. <property>
  20. <description>The address of the scheduler interface.</description>
  21. <name>Yarn.resourcemanager.scheduler.address</name>
  22. <!--根据实际情况,设置hostname域名-->
  23. <value>hostname:18030</value>
  24. </property>
  25. <property>
  26. <description>The address of the RM web application.</description>
  27. <name>Yarn.resourcemanager.webapp.address</name>
  28. <!--根据实际情况,设置hostname域名-->
  29. <value>hostname:18088</value>
  30. </property>
  31. <property>
  32. <description>The address of the resource tracker interface.</description>
  33. <name>Yarn.resourcemanager.resource-tracker.address</name>
  34. <!--根据实际情况,设置hostname域名-->
  35. <value>hostname:8025</value>
  36. </property>
  37. </configuration>

6.4 hdfs-site.xml 配置

Xml代码  
  1. <configuration>
  2. <property>
  3. <name>dfs.namenode.name.dir</name>
  4. <!--手工创建好-->
  5. <value>/home/hadoop/data/hdfs/name</value>
  6. </property>
  7. <property>
  8. <name>dfs.datanode.data.dir</name>
  9. <!--手工创建好-->
  10. <value>/home/hadoop/data/hdfs/data</value>
  11. </property>
  12. <property>
  13. <!--HDFS文件复本数-->
  14. <name>dfs.replication</name>
  15. <value>1</value>
  16. </property>
  17. </configuration>

七、Hadoop初始化并启动

  • 格式化Hadoop NameNode
Java代码  
  1. hadoop namenode -format

观察日志,如果有输出中包括Storage directory /home/hadoop/data/hdfs/name has been successfully formatted,则表示格式化成功

  • 启动Hadoop
Java代码  
  1. /home/hadoop/hadoop-2.5.2/sbin/start-all.sh
  • 使用JDK的jps检查Hadoop状态,如果是如下结果,则表示安装成功
Java代码  
  1. 10682 DataNode
  2. 10463 NameNode
  3. 11229 ResourceManager
  4. 24647 Jps
  5. 11040 SecondaryNameNode
  6. 11455 NodeManager
  • 使用netstat -anp|grep java观察Hadoop端口号使用情况
Java代码  
  1. tcp        0      0 0.0.0.0:8042            0.0.0.0:*               LISTEN      11455/java
  2. tcp        0      0 0.0.0.0:50090           0.0.0.0:*               LISTEN      11040/java
  3. tcp        0      0 0.0.0.0:50070           0.0.0.0:*               LISTEN      10463/java
  4. tcp        0      0 0.0.0.0:8088            0.0.0.0:*               LISTEN      11229/java
  5. tcp        0      0 0.0.0.0:34456           0.0.0.0:*               LISTEN      11455/java
  6. tcp        0      0 0.0.0.0:13562           0.0.0.0:*               LISTEN      11455/java
  7. tcp        0      0 0.0.0.0:50010           0.0.0.0:*               LISTEN      10682/java
  8. tcp        0      0 0.0.0.0:50075           0.0.0.0:*               LISTEN      10682/java
  9. tcp        0      0 0.0.0.0:8030            0.0.0.0:*               LISTEN      11229/java
  10. tcp        0      0 0.0.0.0:8031            0.0.0.0:*               LISTEN      11229/java
  11. tcp        0      0 0.0.0.0:8032            0.0.0.0:*               LISTEN      11229/java
  12. tcp        0      0 0.0.0.0:8033            0.0.0.0:*               LISTEN      11229/java
  13. tcp        0      0 0.0.0.0:50020           0.0.0.0:*               LISTEN      10682/java
  14. tcp        0      0 0.0.0.0:8040            0.0.0.0:*               LISTEN      11455/java
  • 浏览NameNode、DataNode信息,可以查看HDFS状态信息
Java代码  
  1. http://hostname:50070
  • 浏览ResourceManagered运行状态,可以浏览MapReduce任务的执行情况
Java代码  
  1. http://hostname:8088

八、运行Hadoop自带的WordCount实例

  • 创建本地文件用于计算这个文件中的单词数
Java代码  
  1. echo "My first hadoop example. Hello Hadoop in input. " > /home/hadoop/input
  • 创建HDFS输入目录,用于将上面的文件写入这个目录
Java代码  
  1. hadoop fs -mkdir /user/hadooper
  • 传文件到HDFS输入目录
Java代码  
  1. hadoop fs -put /home/hadoop/input /user/hadooper
  • 执行Hadoop自带的WordCount例子
Java代码  
  1. hadoop jar /home/hadoop/hadoop-2.5.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.2.jar wordcount /user/hadooper/input /user/hadooper/output
  • MapReduce的过程输出
Java代码  
  1. hadoop@hostname:~/hadoop-2.5.2/share/hadoop/mapreduce$ hadoop jar /home/hadoop/hadoop-2.5.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.2.jar wordcount /user/hadooper/input /user/hadooper/output
  2. 14/11/23 19:45:04 INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8032
  3. 14/11/23 19:45:05 INFO input.FileInputFormat: Total input paths to process : 1
  4. 14/11/23 19:45:05 INFO mapreduce.JobSubmitter: number of splits:1
  5. 14/11/23 19:45:06 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1416742510596_0001
  6. 14/11/23 19:45:06 INFO impl.YarnClientImpl: Submitted application application_1416742510596_0001
  7. 14/11/23 19:45:07 INFO mapreduce.Job: The url to track the job: http://hostname:8088/proxy/application_1416742510596_0001/
  8. 14/11/23 19:45:07 INFO mapreduce.Job: Running job: job_1416742510596_0001
  9. 14/11/23 19:45:18 INFO mapreduce.Job: Job job_1416742510596_0001 running in uber mode : false
  10. 14/11/23 19:45:18 INFO mapreduce.Job:  map 0% reduce 0%
  11. 14/11/23 19:45:26 INFO mapreduce.Job:  map 100% reduce 0%
  12. 14/11/23 19:45:36 INFO mapreduce.Job:  map 100% reduce 100%
  13. 14/11/23 19:45:37 INFO mapreduce.Job: Job job_1416742510596_0001 completed successfully
  14. 14/11/23 19:45:37 INFO mapreduce.Job: Counters: 49
  15. File System Counters
  16. FILE: Number of bytes read=102
  17. FILE: Number of bytes written=195793
  18. FILE: Number of read operations=0
  19. FILE: Number of large read operations=0
  20. FILE: Number of write operations=0
  21. HDFS: Number of bytes read=168
  22. HDFS: Number of bytes written=64
  23. HDFS: Number of read operations=6
  24. HDFS: Number of large read operations=0
  25. HDFS: Number of write operations=2
  26. Job Counters
  27. Launched map tasks=1
  28. Launched reduce tasks=1
  29. Data-local map tasks=1
  30. Total time spent by all maps in occupied slots (ms)=5994
  31. Total time spent by all reduces in occupied slots (ms)=6925
  32. Total time spent by all map tasks (ms)=5994
  33. Total time spent by all reduce tasks (ms)=6925
  34. Total vcore-seconds taken by all map tasks=5994
  35. Total vcore-seconds taken by all reduce tasks=6925
  36. Total megabyte-seconds taken by all map tasks=6137856
  37. Total megabyte-seconds taken by all reduce tasks=7091200
  38. Map-Reduce Framework
  39. Map input records=1
  40. Map output records=8
  41. Map output bytes=80
  42. Map output materialized bytes=102
  43. Input split bytes=119
  44. Combine input records=8
  45. Combine output records=8
  46. Reduce input groups=8
  47. Reduce shuffle bytes=102
  48. Reduce input records=8
  49. Reduce output records=8
  50. Spilled Records=16
  51. Shuffled Maps =1
  52. Failed Shuffles=0
  53. Merged Map outputs=1
  54. GC time elapsed (ms)=101
  55. CPU time spent (ms)=2640
  56. Physical memory (bytes) snapshot=422895616
  57. Virtual memory (bytes) snapshot=2055233536
  58. Total committed heap usage (bytes)=308281344
  59. Shuffle Errors
  60. BAD_ID=0
  61. CONNECTION=0
  62. IO_ERROR=0
  63. WRONG_LENGTH=0
  64. WRONG_MAP=0
  65. WRONG_REDUCE=0
  66. File Input Format Counters
  67. Bytes Read=49
  68. File Output Format Counters
  69. Bytes Written=64
  • 查看MapReduce的运行结果
Java代码  
  1. hadoop@hostname:~/hadoop-2.5.2/share/hadoop/mapreduce$ hadoop fs -cat /user/hadooper/output/part-r-00000
  2. Hadoop  1
  3. Hello   1
  4. My  1
  5. example.    1
  6. first   1
  7. hadoop  1
  8. in  1
  9. input.  1

九、运行Hadoop的PI程序

Java代码  
  1. hadoop jar /home/hadoop/hadoop-2.5.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.2.jar pi 10 10

执行结果是3.200000000000000000

十、Hadoop常见问题

1. hadoop不正常推出后,重启后,NameNode将进入Safe Mode,不能提交任务,解决办法:

Java代码  
  1. hadoop dfsadmin -safemode leave

Hadoop伪集群环境搭建相关推荐

  1. Hadoop教程(二)Hadoop伪集群环境安装

    Hadoop教程(二)Hadoop伪集群环境安装 本文链接:https://blog.csdn.net/yuan_xw/article/details/50039325 Hadoop教程(二)Hado ...

  2. 王家林的“云计算分布式大数据Hadoop实战高手之路---从零开始”的第五讲Hadoop图文训练课程:解决典型Hadoop分布式集群环境搭建问题

    王家林的"云计算分布式大数据Hadoop实战高手之路---从零开始"的第五讲Hadoop图文训练课程:解决典型Hadoop分布式集群环境搭建问题 参考文章: (1)王家林的&quo ...

  3. 大数据技术之Hadoop概述集群环境搭建常见错误解决等

    Hadoop概述 文章目录 Hadoop概述 1. Hadoop是什么 2. Hadoop发展历史 4. Hadoop的优势 5. Hadoop组成 6. 大数据技术生态体系 7. 推荐系统框架图略图 ...

  4. 大数据系列(hadoop) 集群环境搭建二

    转载于:https://www.cnblogs.com/YellowstonePark/p/7699127.html

  5. 大数据 -- Hadoop集群环境搭建

    首先我们来认识一下HDFS, HDFS(Hadoop Distributed File System )Hadoop分布式文件系统.它其实是将一个大文件分成若干块保存在不同服务器的多个节点中.通过联网 ...

  6. 大数据介绍、集群环境搭建、Hadoop介绍、HDFS入门介绍

    大数据介绍.集群环境搭建.Hadoop介绍.HDFS入门介绍 文章目录 大数据介绍.集群环境搭建.Hadoop介绍.HDFS入门介绍 1.课前资料 2.课程整体介绍 3.大数据介绍 3.1 什么是大数 ...

  7. hadoop集群环境搭建准备工作

    一定要注意hadoop和linux系统的位数一定要相同,就是说如果hadoop是32位的,linux系统也一定要安装32位的. 准备工作: 1 首先在VMware中建立6台虚拟机(配置默认即可).这是 ...

  8. Hadoop 2.x 完全分布式HA集群环境搭建

    Hadoop 2.x 完全分布式HA集群环境搭建 目录 Hadoop 2.0 环境搭建 前提:环境准备 第一步:修改hadoop-env.sh配置文件,配置好JAVA_HOME环境变量 第二步:修改h ...

  9. 【Hadoop生态圈】1.Hadoop入门教程及集群环境搭建

    文章目录 1.简介 2.环境准备 3.安装hadoop 3.修改Hadoop配置文件 3.1.hadoop-env.sh配置 3.2.core-site.xml配置 3.3.hdfs-site.xml ...

最新文章

  1. iOS开发UI篇—实现UITableview控件数据刷新
  2. go 向buff写入一个字节_我在 Go 中犯的 5 个错误
  3. Intellij IDEA运行报Command line is too long解法
  4. 深入浅出统计学 第四五章 离散概率的计算与分布
  5. view类不响应自定义消息_安卓平台如何给控件添加自定义操作?
  6. 个人开发—进度记录(二)
  7. ABAP--动态创建类型和变量的使用程序样例
  8. mysql8.0.15 linux安装_Linux下mysql 8.0.15 安装配置图文教程以及修改密码
  9. 浅谈LoRa,LoRaWAN,NB-IoT三类物联网技术
  10. vue3结合element-plus实现标签手动标注效果
  11. 软件开发过程与项目管理(7.软件项目进度计划)
  12. 愉快地在64位系统下运行汇编
  13. 【转】百度网盘高速下载-暴力油猴脚本
  14. 1387: [蓝桥杯2018决赛]阅兵方阵
  15. html数独游戏源代码,数独算法及源代码
  16. 教师计算机知识比赛方案,小学信息技术教师基本功竞赛方案.doc
  17. 剪辑软件生产力工具pr,ae,达芬奇对比
  18. 头歌Educoder——Java高级特性 - JDBC(上)
  19. oracle+dbcc+checkdb,dbcc checkdb 修复数据库
  20. TextToSpeech文字转语音

热门文章

  1. 【错误记录】Flutter 插件不兼容 ( requires Flutter SDK version >=1.22.0 <2.0.0, url_launcher >=5.7.7 <6.0.0- )
  2. 【约束布局】ConstraintLayout 13 种相对定位属性组合 ( 属性组合 | 用法说明 )
  3. 线程了解以及创建线程的Threading模块中的部分方法
  4. [Spring cloud 一步步实现广告系统] 9. 主类和配置文件
  5. 小程序协同工作和发布
  6. Stack Overflow:研究发现访问PHP和 Android的流量更可能来自低收入国家
  7. [No00009B]win10快捷键大全
  8. PHPcms 系统简单使用
  9. VS切换到按F5不需要按Fn键的快捷键模式
  10. 『前端规范化』CSS命名规范化