设为首页 收藏本站
查看: 1200|回复: 0

[经验分享] 完全分布模式安装Hadoop

[复制链接]

尚未签到

发表于 2015-7-14 02:48:24 | 显示全部楼层 |阅读模式
    典型的在一个集群中:NameNode部署在一台机器上,JobTracker部署在另一台机器上,作为主节点;其他的机器部署DataNode和TaskTracker,作为从节点。
    我的机子内存太小,只虚拟了三个Linux系统,NameNode和JobTracker部署在同一个机器上,作为主节点,另外两个部署DataNode和TaskTracker,作为从节点。

主机名IP
主节点h1192.168.0.129
从节点h2192.168.0.130
从节点h3192.169.0.131
   
    1、各个节点配置
      1)确保各个机器的主机名和IP地址之间能够正常解析,修改/etc/hosts文件。
        如果该机器作为主节点,则需要在文件中添加集群中所有机器的IP及其对应的主机名;
        如果该机器作为从节点,则只需要在文件中添加本机的IP地址及其对应的主机名和主服务的IP的地址及其对应的主机名
        所有节点的/etc/hosts文件配置如下:



[iyunv@h1 ~]# vi /etc/hosts
192.168.0.128 centoshadoop
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.129 h1
192.168.0.130 h2
192.168.0.131 h3
     关闭所有节点服务器的防火墙:



[iyunv@h1 ~]# service iptables stop
  关闭所有节点的selinux



[iyunv@h1 ~]# cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted
  
  2)在所有的机器上建立相同的用户 coder



[iyunv@h1 ~]# useradd coder
[iyunv@h1 ~]# passwd coder
Changing password for user coder.
New password:
BAD PASSWORD: it is based on a dictionary word
Retype new password:
passwd: all authentication tokens updated successfully.
[iyunv@h1 ~]#
     3)在所有节点的上以coder账号登陆,并进入到coder的主目录



[coder@h1 ~]$ pwd
/home/coder
[coder@h1 ~]$
      4)SSH配置
        4.1)在所有节点上生成密钥对。
  



[coder@h1 ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/coder/.ssh/id_rsa):
Created directory '/home/coder/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/coder/.ssh/id_rsa.
Your public key has been saved in /home/coder/.ssh/id_rsa.pub.
The key fingerprint is:
29:1c:df:59:0d:5f:ee:28:07:c0:57:21:15:af:a3:88 coder@h1
The key's randomart image is:
+--[ RSA 2048]----+
|         .. oo=o.|
|          ...= + |
|      .    .o o o|
|     . o o o . + |
|      o S o . = .|
|       . . . + . |
|        E . .    |
|                 |
|                 |
+-----------------+
[coder@h1 ~]$
  
   4.2)然后进入.ssh目录,把公钥复制到authorized_keys



[coder@h1 ~]$ cd .ssh
[coder@h1 .ssh]$ ls
id_rsa  id_rsa.pub
[coder@h1 .ssh]$ cp id_rsa.pub authorized_keys
   4.3)分发ssh公钥到各个节点,把authorized_keys的内容互相拷贝加入到各个节点的authorized_keys中,这样就可以免密码彼此ssh连入。
          可以使用scp命令把h2和h3节点的authorized_keys传送到h1主节点汇总成一个authorized_keys文件后再传送到各个节点
  



[iyunv@h2 .ssh]# scp authorized_keys h1:/softs
  
   汇总成一个文件可以使用cat authorized_keys >> /authorized_keys ,汇总完成后再把authorized_keys传回到各个节点相应的位置。
            最后合成的文件如下:
  



[iyunv@h1 .ssh]# cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAwVeTrgPPwMlI5l8cBVafmx3SSnDF/ad62xdJgnRFtzcBbwGpDcciAcPTLrjwbrodhDS/jWk1CIwQegPziHK94+Z9D9hGmyzJg3qRc9iH9tJF8BxZnsiM5zaXvU921mHdbQO/eeXGROvlX1VmkeoAZFXamzfPSXPL/ooyWxBvNiG8j8G4mxd2Cm/UpaaEI/C+gBB5hgerKJCCpyHudNuiqwz7SDZxIOOCU1hEG4xnMZJtbZg39QMPuLOYcodSMI3cGHb+zdwct62IxMMV/ZupQW2h5rXN0SmVTNDB5dsd5NIDCdsGEJU59ZSid2d71yek8iUk9t497cwZvKwrd7lVTw== coder@h1
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA8mrNyz17fHLzqyPWcmDhNwCu3iQPOS9gH4yK/10kNNu0Lly6G+OxzfB93+mfOQK2ejGjmYwNYKeSkDqyvHBw/A7Gyb+r2WZBlq/hNwrQsulUo57EUPLvF4g3cTlPAznhBGu4fFgSE7VXR1YZ6R0qUBwLRqvnZODhHzOklIH4Jasyc3oE1bHkEeixwo+V9MuwlnTLmy2R9HgixFCCzNQqiaIRgdi+/10FLQH18QGYTP2CQMpvtWoFXmOLL3VbHQXMlosfVYSXg3/wJA1X6KqYXrWkX5FAPMpeVyFl1OpHC+oH1SNf7FcVsAJ2E8QjQZ3UQxjN+wOzwe8AauLkyNhnbw== coder@h2
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtQkOcpp9/s3v+jyX3T8jO7XiTqW0KxoUGl9ZdIcToish57tzJq1ajkKDMFDVBXXb8h3m+T9dPc6lhYtb1r6WBF6HB0fQ8Cwt8Sg6WxkhJDGhNzZTYL6U1rLWDLXQ6Y0NVub5mktu1ToDzHJw8GHri125b0RuRjwx12eo1kt0E3hP6DCEFtQfEyO/24dFOlbVTqF+/LT5HIA7lJFwlWZcRx0WrpB/w3lzQ3qKShAqo5MiCMJ7F5oEzgIeNcTQIqn4TJxci3NVG3VLga/MR2K9O2OZQjKhBUxMKPaZUlQefkbrxPBcKSfS1khqdAuXyTYfeSD0QPzrtSBxo9bLB7+urQ== coder@h3
[iyunv@h1 .ssh]#
  
  
    2、安装、配置Hadoop文件
      1)把hadoop解压到 /home/coder/
      2)主节点上的配置
        2.1)hadoop-env.sh,找到 export JAVA_HOME,修改为JDK的安装路径



export JAVA_HOME=/usr/java/jdk1.6.0_38
        2.1)core-site.xml,一定要配上namenode所在的主节点ip或者主机名



[coder@h1 conf]$ vi core-site.xml





fs.default.name
hdfs://192.168.0.129:9000


   2.3)hdfs-site.xml,有两个从节点,数据复制的份数可以改成2








dfs.replication
2


   2.4)mapred-site.xml,改成JobTracker所在主节点的ip或者主机名








mapred.job.tracker
192.168.0.129:9001


   2.5)masters,修改为主节点的主机名,每个主机名一行。



[coder@h1 conf]$ cat masters
h1
[coder@h1 conf]$
   2.6)slaves,加入所有的从节点主机名



[coder@h1 conf]$ cat slaves
h2
h3
[coder@h1 conf]$


      3)从节点上的配置
        把主节点上的已配置好的hadoop整个安装目录打包后复制到各个从节点中就行了,保持路径一致,用scp命令传输
    3、hadoop运行
      1)格式化文件系统,在主节点执行,进入hadoop安装根目录



[coder@h1 hadoop-0.20.2]# bin/hadoop namenode -format


[coder@h1 hadoop-0.20.2]$ bin/hadoop namenode -format
13/03/27 23:03:59 INFO namenode.NameNode: STARTUP_MSG:
/******************************************************/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = h1/192.168.0.129
STARTUP_MSG:   args = [-format]
STARTUP_MSG:   version = 0.20.2
STARTUP_MSG:   build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.20 -r 911707; compiled by 'chrisdo' on Fri Feb 19 08:07:34 UTC 2010
************************************************************/
13/03/27 23:04:00 INFO namenode.FSNamesystem: fsOwner=coder,coder
13/03/27 23:04:00 INFO namenode.FSNamesystem: supergroup=supergroup
13/03/27 23:04:00 INFO namenode.FSNamesystem: isPermissionEnabled=true
13/03/27 23:04:00 INFO common.Storage: Image file of size 95 saved in 0 seconds.
13/03/27 23:04:00 INFO common.Storage: Storage directory /tmp/hadoop-coder/dfs/name has been successfully formatted.
13/03/27 23:04:00 INFO namenode.NameNode: SHUTDOWN_MSG:
/******************************************************/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at h1/192.168.0.129
*********************************
      2)启动hadoop守护进程,在主节点上执行



[coder@h1 hadoop-0.20.2]# bin/start-all.sh
     3)使用jps命令检测启动情况
        主节点上:



[coder@h1 hadoop-0.20.2]$ jps
2610 NameNode
2843 Jps
2736 SecondaryNameNode
2775 JobTracker
[coder@h1 hadoop-0.20.2]$
  从节点上:



[coder@h2 conf]$ jps
2748 DataNode
2854 Jps
2792 TaskTracker
[coder@h2 conf]$


  4)hadoop启动成功。
  一些注意的地方:
  在使用scp命令传输的时候,可能是需要切换到root账号进行操作;
  在用root账号操作的文件,比如说传输authorized_keys文件,合并传输好之后最好把文件的所有者改回coder
  
    4、测试
      4.1)先建立一个文件夹,并在文件夹中建立两个文件。



[coder@h1 ~]$ mkdir input
[coder@h1 ~]$ cd input
[coder@h1 input]$ echo "hey man" > test1.txt
[coder@h1 input]$ echo "hey hadoop" > test2.txt
[coder@h1 input]$ ls
test1.txt  test2.txt
[coder@h1 input]$ cat test1.txt
hey man
[coder@h1 input]$ cat test2.txt
hey hadoop
[coder@h1 input]$
  
  4.2)把刚才建立的文件夹放到hadoop文件系统中



[coder@h1 hadoop-0.20.2]$ bin/hadoop dfs -put ../input in
  查看一下是否存放成功,检查hadoop文件系统中的in目录



[coder@h1 hadoop-0.20.2]$ bin/hadoop dfs -ls ./in/*
-rw-r--r--   2 coder supergroup          8 2013-03-28 21:28 /user/coder/in/test1.txt
-rw-r--r--   2 coder supergroup         11 2013-03-28 21:28 /user/coder/in/test2.txt
[coder@h1 hadoop-0.20.2]$
      4.3)运行hadoop自带的单词个数统计测试程序,把结果输出到out目录
  



[coder@h1 hadoop-0.20.2]$ bin/hadoop jar hadoop-0.20.2-examples.jar wordcount in out
13/03/28 21:34:47 INFO input.FileInputFormat: Total input paths to process : 2
13/03/28 21:34:48 INFO mapred.JobClient: Running job: job_201303282119_0001
13/03/28 21:34:49 INFO mapred.JobClient:  map 0% reduce 0%
13/03/28 21:35:02 INFO mapred.JobClient:  map 50% reduce 0%
13/03/28 21:35:08 INFO mapred.JobClient:  map 100% reduce 0%
13/03/28 21:35:11 INFO mapred.JobClient:  map 100% reduce 16%
13/03/28 21:35:20 INFO mapred.JobClient:  map 100% reduce 100%
13/03/28 21:35:22 INFO mapred.JobClient: Job complete: job_201303282119_0001
13/03/28 21:35:22 INFO mapred.JobClient: Counters: 17
13/03/28 21:35:22 INFO mapred.JobClient:   Job Counters
13/03/28 21:35:22 INFO mapred.JobClient:     Launched reduce tasks=1
13/03/28 21:35:22 INFO mapred.JobClient:     Launched map tasks=2
13/03/28 21:35:22 INFO mapred.JobClient:     Data-local map tasks=2
13/03/28 21:35:22 INFO mapred.JobClient:   FileSystemCounters
13/03/28 21:35:22 INFO mapred.JobClient:     FILE_BYTES_READ=37
13/03/28 21:35:22 INFO mapred.JobClient:     HDFS_BYTES_READ=19
13/03/28 21:35:22 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=144
13/03/28 21:35:22 INFO mapred.JobClient:     HDFS_BYTES_WRITTEN=23
13/03/28 21:35:22 INFO mapred.JobClient:   Map-Reduce Framework
13/03/28 21:35:22 INFO mapred.JobClient:     Reduce input groups=2
13/03/28 21:35:22 INFO mapred.JobClient:     Combine output records=2
13/03/28 21:35:22 INFO mapred.JobClient:     Map input records=2
13/03/28 21:35:22 INFO mapred.JobClient:     Reduce shuffle bytes=43
13/03/28 21:35:22 INFO mapred.JobClient:     Reduce output records=2
13/03/28 21:35:22 INFO mapred.JobClient:     Spilled Records=4
13/03/28 21:35:22 INFO mapred.JobClient:     Map output bytes=27
13/03/28 21:35:22 INFO mapred.JobClient:     Combine input records=2
13/03/28 21:35:22 INFO mapred.JobClient:     Map output records=2
13/03/28 21:35:22 INFO mapred.JobClient:     Reduce input records=2
[coder@h1 hadoop-0.20.2]$
  
  4.4)查看hadoop文件系统中out目录的内容



[coder@h1 hadoop-0.20.2]$ bin/hadoop dfs -ls
Found 2 items
drwxr-xr-x   - coder supergroup          0 2013-03-28 21:28 /user/coder/in
drwxr-xr-x   - coder supergroup          0 2013-03-28 21:35 /user/coder/out
[coder@h1 hadoop-0.20.2]$ bin/hadoop dfs -ls ./out
Found 2 items
drwxr-xr-x   - coder supergroup          0 2013-03-28 21:34 /user/coder/out/_logs
-rw-r--r--   2 coder supergroup         23 2013-03-28 21:35 /user/coder/out/part-r-00000
[coder@h1 hadoop-0.20.2]$ bin/hadoop dfs -cat ./out/*
hadoop  1
hey    2
man     1
cat: Source must be a file.
[coder@h1 hadoop-0.20.2]$
      4.5)可以通过浏览器访问JobTracker节点的50030端口监控JobTracker
DSC0000.png
  
      4.6)可以通过浏览器访问NameNode节点的50070端口监控集群
   DSC0001.png

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-86314-1-1.html 上篇帖子: Hadoop 2.x 重新编译 下篇帖子: FileStatus(hadoop对于一个文件/文件夹的表示)类
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表