准备三台虚拟机,ip分别为192.168.220.10(master)、192.168.220.11(slave1)、192.168.220.12(slave2)

准备好jdk-6u45-linux-x64.bin和hadoop-1.2.1-bin.tar.gz,放在/usr/local/src/目录下

安装JDK(每台虚拟机都安装)

1.进入到/usr/local/src/目录,执行./jdk-6u45-linux-x64.bin

2.修改~/.bashrc,在文件末尾增加三行

  1. export JAVA_HOME=/usr/local/src/jdk1.6.0_45
  2. export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib
  3. export PATH=$PATH:$JAVA_HOME/bin

  

3.使环境变量生效,执行source ~/.bashrc

安装Hadoop

在192.168.220.10机器上安装hadoop

1.进入到/usr/local/src/目录,解压hadoop-1.2.1-bin.tar.gz,执行tar -zxf hadoop-1.2.1-bin.tar.gz

2.修改配置文件

masters文件

  1. master

  

slaves文件

  1. slave1
  2. slave2

  

core-site.xml文件

  1. <configuration>
  2. <property>
  3. <name>hadoop.tmp.dir</name>
  4. <value>/usr/local/src/hadoop-1.2.1/tmp</value>
  5. </property>
  6. <property>
  7. <name>fs.default.name</name>
  8. <value>hdfs://192.168.220.10:9000</value>
  9. </property>
  10. </configuration>

  

mapred-site.xml文件

  1. <configuration>
  2. <property>
  3. <name>mapred.job.tracker</name>
  4. <value>http://192.168.220.10:9001</value>
  5. </property>
  6. </configuration>

  

hdfs-site.xml文件

  1. <configuration>
  2. <property>
  3. <name>dfs.replication</name>
  4. <value>3</value>
  5. </property>
  6. </configuration>

  

hadoop-env.sh文件,在后面添加一行

  1. export JAVA_HOME=/usr/local/src/jdk1.6.0_45

  

3.将/usr/local/src/hadoop-1.2.1目录拷贝到192.168.220.11、192.168.220.12机器上

配置hostname

配置192.168.220.10的主机名为master

1.执行hostname master

2.修改/etc/hostname文件

  1. master

  

修改192.168.220.11的主机名为slave1,修改192.168.220.12的主机名为slave2

配置host文件

三台机器的/etc/hosts文件末尾添加以下代码

  1. 192.168.220.10 master
  2. 192.168.220.11 slave1
  3. 192.168.220.12 slave2

关闭防火墙和SELinux

分别在每台机器上执行

  1. systemctl stop firewalld.service
  2. setenforce

配置SSH

1.在192.168.220.10上执行ssh-keygen,在~目录下新增.ssh目录,目录中的文件为id_rsa,id_rsa.pub

2.将id_rsa.pub拷贝为authorized_keys

  1. cp id_rsa.pub authorized_keys

3.在192.168.220.11和192.168.220.12上分别执行ssh-keygen

4.将192.168.220.11和192.168.220.12上id_rsa.pub的内容分别拷贝到192.168.220.10的authorized_keys文件中,如下:

  1. ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC9mGRhFOdcoHw9GUnKQmqThNKpsyah93Dtq/d8RICGWIHDRJ3GXd0sEcb743ejwbuCMmtlhheXcU0FuyA6Cm0jvMyvDfaPKArtxl6KT7Z93uC0VDCXDRomueux81HAIVjc7ZqlXwVeYs1LITxEeJykKlFOXvK7JexWhWGdMMADwxbFMbaNsZ9EwRxcFLFtNg65FQ+u8CIV9KR3D02kemwLCsP+xiRcgs+wirQPm5JM+2cJoLsVQBz3Hk335IsEhc1Xb9Cralo8Tt8gh/ho8K/1pVjvyW1b0LkP9HGNdwVYD9wkWdEJRkryLXBEXpjk4xu+riF+N4rOzJD root@master
  2. ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDn79fdfR/NjzPVD3NPj1vBBfQdVOrv7jeb4UJCOsd7xioPRiz8gOQnOmhu5C+GchbyGA+tg5pXwnNJTOO2wn32U4lOPndW0okN/wqyN4vgq/taJi7JgY/8rneBiGaIIdNIy/pAGlMwb53Qn766adetMhsxYMD2l4uxmbVVjzCRb8QP5EsAYTmmFOODzJsPm70uF3j1Q8zGavYg0wFSYR/yECQns4DBSuBJNxdGY6PskBXqurahwi5yaR3vWV1Ix4wtB6BYuQomEnGdzOSfrBMZ/yc5tXo0xmEfY7wFkize6z9Pm2E3oDoMR18YkwT1Cz6fHikVILA9cldtL root@slave1
  3. ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCydYCvASzCZggks4hMqOcYSGLO2eAvocWezNOMwspTfpJ105Jumb/vf5h6cRZeckq56IvhSV6t6mytk4pZoZjjZPSmWvCwLtMRMPShNbA3BYtj5V3WRKV8ZcMrNdD//U7iHHoJm57vI/m+XO42YSYjPw7JDkb8Ij9b6zgI3fyvbSSYeXb451PlyJLHdxIzRMAaZDSbAML9e7EO8VJB9Wf9bXpow4+VeP33it3kgMNUlHQtyqduSwYGxVVtGsUTJkxnuRsbWeeA1/pp8MNFKUgBTMALTVHByglgZqwGcbblJxsG832PIZNRECIFqorm6odftjnT4DR7/0yR root@slave2

5.将192.168.220.10的authorized_keys文件拷贝到192.168.220.11、192.168.220.12机器上

配置完成后三台机器可以互相访问不用密码

好了,到这里Hadoop集群就配置完了,让我们来使用下吧

在192.168.220.10上格式化namenode

进入到/usr/local/src/hadoop-1.2.1/bin目录,执行

  1. ./hadoop namenode -format

出现

  1. // :: INFO namenode.NameNode: STARTUP_MSG:
  2. /************************************************************
  3. STARTUP_MSG: Starting NameNode
  4. STARTUP_MSG: host = master/192.168.220.10
  5. STARTUP_MSG: args = [-format]
  6. STARTUP_MSG: version = 1.2.1
  7. STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.2 -r 1503152; compiled by 'mattf' on Mon Jul 22 15:23:09 PDT 2013
  8. STARTUP_MSG: java = 1.6.0_45
  9. ************************************************************/
  10. // :: INFO util.GSet: Computing capacity for map BlocksMap
  11. // :: INFO util.GSet: VM type = -bit
  12. // :: INFO util.GSet: 2.0% max memory =
  13. // :: INFO util.GSet: capacity = ^ = entries
  14. // :: INFO util.GSet: recommended=, actual=
  15. // :: INFO namenode.FSNamesystem: fsOwner=root
  16. // :: INFO namenode.FSNamesystem: supergroup=supergroup
  17. // :: INFO namenode.FSNamesystem: isPermissionEnabled=true
  18. // :: INFO namenode.FSNamesystem: dfs.block.invalidate.limit=
  19. // :: INFO namenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval= min(s), accessTokenLifetime= min(s)
  20. // :: INFO namenode.FSEditLog: dfs.namenode.edits.toleration.length =
  21. // :: INFO namenode.NameNode: Caching file names occuring more than times
  22. // :: INFO common.Storage: Image file /usr/local/src/hadoop-1.2./tmp/dfs/name/current/fsimage of size bytes saved in seconds.
  23. // :: INFO namenode.FSEditLog: closing edit log: position=, editlog=/usr/local/src/hadoop-1.2./tmp/dfs/name/current/edits
  24. // :: INFO namenode.FSEditLog: close success: truncate to , editlog=/usr/local/src/hadoop-1.2./tmp/dfs/name/current/edits
  25. // :: INFO common.Storage: Storage directory /usr/local/src/hadoop-1.2./tmp/dfs/name has been successfully formatted.
  26. // :: INFO namenode.NameNode: SHUTDOWN_MSG:
  27. /************************************************************
  28. SHUTDOWN_MSG: Shutting down NameNode at master/192.168.220.10
  29. ************************************************************/

用jps查看进程

  1. [root@master bin]# jps
  2. JobTracker
  3. NameNode
  4. SecondaryNameNode
  5. Jps

在192.168.220.11查看进程

  1. DataNode
  2. Jps
  3. TaskTracker

在192.168.220.12查看进程

  1. DataNode
  2. TaskTracker
  3. Jps

测试下:

执行./hadoop fs -ls /

  1. drwxr-xr-x - root supergroup -- : /usr

上传文件,执行./hadoop fs -put /root/w.txt /

查看文件执行./hadoop fs -cat /w.txt,显示

  1. ddd

成功

注:

问题:上传文件时出现以下错误

  1. [root@master bin]# ./hadoop fs -put /root/a.txt /
  2. // :: WARN hdfs.DFSClient: DataStreamer Exception: org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /a.txt could only be replicated to nodes, instead of
  3. at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:)
  4. at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:)
  5. at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
  6. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:)
  7. at java.lang.reflect.Method.invoke(Method.java:)
  8. at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:)
  9. at org.apache.hadoop.ipc.Server$Handler$.run(Server.java:)
  10. at org.apache.hadoop.ipc.Server$Handler$.run(Server.java:)
  11. at java.security.AccessController.doPrivileged(Native Method)
  12. at javax.security.auth.Subject.doAs(Subject.java:)
  13. at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:)
  14. at org.apache.hadoop.ipc.Server$Handler.run(Server.java:)
  15.  
  16. at org.apache.hadoop.ipc.Client.call(Client.java:)
  17. at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:)
  18. at com.sun.proxy.$Proxy1.addBlock(Unknown Source)
  19. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  20. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:)
  21. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:)
  22. at java.lang.reflect.Method.invoke(Method.java:)
  23. at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:)
  24. at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:)
  25. at com.sun.proxy.$Proxy1.addBlock(Unknown Source)
  26. at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.locateFollowingBlock(DFSClient.java:)
  27. at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.nextBlockOutputStream(DFSClient.java:)
  28. at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.access$(DFSClient.java:)
  29. at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$DataStreamer.run(DFSClient.java:)
  30.  
  31. // :: WARN hdfs.DFSClient: Error Recovery for null bad datanode[] nodes == null
  32. // :: WARN hdfs.DFSClient: Could not get block locations. Source file "/a.txt" - Aborting...
  33. put: java.io.IOException: File /a.txt could only be replicated to nodes, instead of
  34. // :: ERROR hdfs.DFSClient: Failed to close file /a.txt
  35. org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /a.txt could only be replicated to nodes, instead of
  36. at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:)
  37. at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:)
  38. at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
  39. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:)
  40. at java.lang.reflect.Method.invoke(Method.java:)
  41. at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:)
  42. at org.apache.hadoop.ipc.Server$Handler$.run(Server.java:)
  43. at org.apache.hadoop.ipc.Server$Handler$.run(Server.java:)
  44. at java.security.AccessController.doPrivileged(Native Method)
  45. at javax.security.auth.Subject.doAs(Subject.java:)
  46. at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:)
  47. at org.apache.hadoop.ipc.Server$Handler.run(Server.java:)
  48.  
  49. at org.apache.hadoop.ipc.Client.call(Client.java:)
  50. at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:)
  51. at com.sun.proxy.$Proxy1.addBlock(Unknown Source)
  52. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  53. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:)
  54. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:)
  55. at java.lang.reflect.Method.invoke(Method.java:)
  56. at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:)
  57. at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:)
  58. at com.sun.proxy.$Proxy1.addBlock(Unknown Source)
  59. at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.locateFollowingBlock(DFSClient.java:)
  60. at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.nextBlockOutputStream(DFSClient.java:)
  61. at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.access$(DFSClient.java:)
  62. at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$DataStreamer.run(DFSClient.java:)

解决方法:关闭防火墙

CentOS 7安装Hadoop集群的更多相关文章

  1. CentOS 6 安装Hadoop集群

    hadoop2.6.4安装包(链接:https://pan.baidu.com/s/15qHpdoLBQHP4HdxOJzNcsg 密码:5hel) 1.准备Linux环境 1.0先将虚拟机的网络模式 ...

  2. docker安装hadoop集群

    docker安装hadoop集群?图啥呢?不图啥,就是图好玩.本篇博客主要是来教大家如何搭建一个docker的hadoop集群.不要问 为什么我要做这么无聊的事情,答案你也许知道,因为没有女票.... ...

  3. CentOS7 搭建Ambari-Server,安装Hadoop集群(一)

    2017-07-05:修正几处拼写错误,之前没发现,抱歉! 第一次在cnblogs上发表文章,效果肯定不会好,希望各位多包涵. 编写这个文档的背景是月中的时候,部门老大希望我们能够抽时间学习一下Had ...

  4. 在CentOS上安装ZooKeeper集群

    一共准备3个CentOS虚拟机 172.16.9.194 172.16.9.195 172.16.9.196 上传zookeeper-3.3.6.tar.gz到服务器并解压,3台服务器的目录结构如下 ...

  5. 安装Hadoop集群的最快的软件

    Quick Hadoop是一款安装Hadoop集群的桌面软件,只需要点两下鼠标,一分钟之内安装Hadoop到集群上,超快! 还在每台主机的Shell里一行一行地敲安装Hadoop的命令?别苦逼了! 用 ...

  6. 通过ambari安装hadoop集群,ZT

    通过ambari安装hadoop集群,ZT http://www.cnblogs.com/cenyuhai/p/3295635.html http://www.cnblogs.com/cenyuhai ...

  7. Linux上安装Hadoop集群(CentOS7+hadoop-2.8.0)--------hadoop环境的搭建

    Linux上安装Hadoop集群(CentOS7+hadoop-2.8.0)------https://blog.csdn.net/pucao_cug/article/details/71698903 ...

  8. 安装hadoop集群--hdfs

    安装hadoop集群--hdfs 大数据软件 链接:https://pan.baidu.com/s/1-3PYLHMgvvONawJq55hstQ 提取码:izqf 准备一台干净的虚拟机-centos ...

  9. 图文讲解基于centos虚拟机的Hadoop集群安装,并且使用Mahout实现贝叶斯分类实例 (7)

    接下来,我们开启hadoop集群. 如果之前打开过Hadoop,可能会发生lock的问题,解决方案:http://blog.csdn.net/caoshichaocaoshichao/article/ ...

随机推荐

  1. python中简化的验证码功能

    验证码一般用来验证登陆.交易等行为,减少对端为机器操作的概率,python中可以使用random模块,char()内置函数来实现一个简单的验证码功能. import random def veri_c ...

  2. Python使用设计模式中的责任链模式与迭代器模式的示例

    Python使用设计模式中的责任链模式与迭代器模式的示例 这篇文章主要介绍了Python使用设计模式中的责任链模式与迭代器模式的示例,责任链模式与迭代器模式都可以被看作为行为型的设计模式,需要的朋友可 ...

  3. WordPress获取特色图像的链接地址

    为什么要获取WordPress的特色图像呢? 这主要是因为,我们已经写好了静态模板文件,只有获取WordPress特色图像地址插入进去就可以了,非常方便. 还有就是有的时候,我们需要设置图片的宽度为1 ...

  4. 【Kail 学习笔记】自用KAIL更新源

    打开 /etc/apt/source.list 添加-保存即可 deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contr ...

  5. 第 20 课 go如何实现继承的 && 给引用模块起别名

    golang语言中没有继承,但是可以依靠组合来模拟继承和多态. package controllers import ( "encoding/json" md "gowe ...

  6. 简单介绍shell编程四剑客之sed

    概要:分别的作用 grep:文本过滤(模式:pattern)工具,grep,egrep,fgrep,擅长过滤. sed:stream editor 文本编辑工具:(流编辑器),擅长取行.替换. awk ...

  7. EMR目录

    EMR目录: E-MapReduce 是阿里云上的开源大数据平台,用户可以登录集群主节点查看相关安装路径. 登录后也可以使用 env |grep xxx 查看. 或者,在EMR Hadoop集群,切换 ...

  8. json 和对象互相转换

    json 和对象互相转换 导入 Jar 包: import com.fasterxml.jackson.databind.ObjectMapper; Maven 地址: <!-- https:/ ...

  9. Hbuider APP打包流程

      1,下载HBuilder,注册并登陆.首先打开“文件”-“新建”-“移动APP”,输入“应用名称”,“位置”可以根据需要自己选择即可,“选择模板”建议选择空模板: 2,新建完成后, 在项目管理器会 ...

  10. Word 查找替换高级玩法系列之 -- 替换手机号中间几位数字

    1.打开"查找和替换"对话框.切换到"开始"选项卡,在"编辑"组中选择"替换".或者按下快捷键"Ctrl+H& ...