• hadoop完全分布式模式的安装和配置


    本文是将三台电脑用路由器搭建本地局域网,系统为centos6.5,已经实验验证,搭建成功。

    一、设置静态IP&修改主机名&关闭防火墙(all-root)(对三台电脑都需要进行操作)

    0.将三台电脑安装centos6.5系统

    1.设置静态ip(便于机器之间的通信,防止路由器电脑重启后,ip变化,导致不能通信)

    vim /etc/sysconfig/network-scripts/ifcfg-eth0

    DEVICE=eth0 #描述网卡对应的设备别名,例如ifcfg-eth0的文件中它为eth0
    BOOTPROTO=static #设置网卡获得ip地址的方式,可能的选项为static,dhcp或bootp,分别对应静态指定的 ip地址,通过dhcp协议获得的ip地址,通过bootp协议获得的ip地址
    BROADCAST=192.168.0.255 #对应的子网广播地址
    HWADDR=00:07:E9:05:E8:B4 #对应的网卡物理地址

    在文件最后面添加一下代码

    IPADDR=192.168.80.100

    NETMASK=255.255.255.0

    NETWORK=192.168.0.0
    里面的IPADDR地址设置你想要的,我这里是192.168.80.100。
    设置好后,需要让IP地址生效,运行下面命令:

    service network restart Shutting down interface

    然后运行ifconfig就可以看到静态ip是否生效。

    2.修改主机名(每台电脑都要修改,建议使用hadoop100,hadoop101,hadoop102,对应于ip地址最后面三位数)

    vi /etc/sysconfig/network 

    hostname=hadoop100

    重启一下网络service network restart

    验证reboot -h now 立刻重启  然后hostname

    3.关闭防火墙 

    关闭已经启动的防火墙: service iptables stop (只能关闭当前)

    验证:service iptables status

    Firewall is not running

    关闭防火墙开机自动启动功能:

    (1). 先查看 查看: chkconfig --list |grep iptables
    iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off

    (2). 关闭 chkconfig  iptables off

    验证:chkconfig --list |grep iptables

    4.建立hadoop运行帐号

    最好不要使用root操作hadoop,root是超级管理员权限,不推荐各个机器之间使用root访问,

    useradd hadoop 增加用户
    passwd hadoop 设置密码

    二、配置hosts文件(只需要对主机192.168.80.100(hadoop100)进行操作,然后通过scp命令将这些配置分发给其他电脑即可)

    操作192.168.80.100机器

    vi /etc/hosts 添加下面内容

    192.168.80.100 hadoop100
    192.168.80.101 hadoop101
    192.168.80.102 hadoop102

    验证:ping  hadoop100
    ping  hadoop101
    ping  hadoop102

     三、为hadoop账户配置ssh免密码连入

     操作hadoop100,hadoop101,hadoop102机器

    ① ssh-keygen -t rsa会在~/.ssh/文件夹下生成id_rsa  id_rsa.pub两个文件

    ② 根据ip分别执行(对hadoop100,101,102三台机器分别生成公钥)
    cp ~/.ssh/id_rsa.pub ~/.ssh/id_rsa.pub.100
    cp ~/.ssh/id_rsa.pub ~/.ssh/id_rsa.pub.101
    cp ~/.ssh/id_rsa.pub ~/.ssh/id_rsa.pub.102
    将hadoop101,hadoop102的公钥传输到hadoop100的机器上
    scp -r ~/.ssh/id_rsa.pub.101   hadoop@hadoop100:/home/hadoop/.ssh
    scp -r ~/.ssh/id_rsa.pub.102   hadoop@hadoop100:/home/hadoop/.ssh
     
    ④ 把所有机器的公钥,放在hadoop100的一个文件中(在hadoop100的hadoop用户下操作)
     cat ~/.ssh/id_rsa.pub.100 >> ~/.ssh/authorized_keys
     cat ~/.ssh/id_rsa.pub.101 >> ~/.ssh/authorized_keys
     cat ~/.ssh/id_rsa.pub.102 >> ~/.ssh/authorized_keys
     
    验证 ssh hadoop101  发现无效,提示还是需要密码。
     
    ⑤ 修改authorized_keys的权限, 组用户不能有 写(W)权限, 不然ssh 由于安全问题不生效
    authorized_keys 权限改为 644 就OK 
     
    命令  chmod g-w authorized_keys
     
    然后分发给 101和102
    scp -r ~/.ssh/authorized_keys   hadoop@hadoop101:/home/hadoop/.ssh
    scp -r ~/.ssh/authorized_keys   hadoop@hadoop102:/home/hadoop/.ssh
    验证: ssh hadoop101 ...
    然后神奇的事情发生了。 3台机器彼此之间可以互联。
     
    四、下载并解压jdk(只需对hadoop100操作)
    使用root用户进行操作,把jdk解压到/usr/local/ 文件夹中。

    [root@hadoop100 local]#  cd /usr/local

    [root@hadoop100 local]#  ./jdk-6u30-linux-x64.bin解压jdk后,生成jdk1.6.0_30文件夹

    配置环境变量
    [root@hadoop100 local]# vi /etc/profile在最后面加上下面两行
    export JAVA_HOME=/usr/local/jdk1.6.0_30
    export PATH=.:$JAVA_HOME/bin:$PATH
    保存退出
    [root@hadoop100 local]# source /etc/profile使新修改的环境变量生效。
     
    验证: java -version
    五、下载并解压hadoop安装包(仅对hadoop100操作)
     
    5.1解压hadoop并重命名
     
    使用root用户进行以下操作
    tar -zxvf /usr/local/hadoop-1.1.2.tar.gz 
    解压后生成文件夹hadoop-1.1.2。
    重命名 mv hadoop-1.1.2 hadoop
     
    5.2修改权限,使得hadoop用户可以操作hadoop文件夹
     
    chown -R hadoop /usr/local/hadoop/
    chgrp -R hadoop /usr/local/hadoop/
     
    5.3设置hadoop环境变量
     
    vi /etc/profile

    修改为
    export JAVA_HOME=/usr/local/jdk1.6.0_30
    export HADOOP_HOME=/usr/local/hadoop

    export PATH=.:$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATH
    保存退出
    source /etc/profile
     
    验证: hadoop
     
    六、设置hadoop参数
    进入 usr/local/hadoop/conf 文件夹,即可看到以下文件
    6.1配置hadoop-env.sh
     
    找到export JAVA_HOME这一行,去除前面的#号注释符。
    修改 export JAVA_HOME=/usr/local/jdk1.6.0_30
     
    6.2配置core-site.xml
     
    <configuration>
        <property>
    <name>fs.default.name</name>
    <value>hdfs://hadoop100:9000</value>
    <description>change your own hostname</description>
        </property>
        <property>
    <name>hadoop.tmp.dir</name>
    <value>/home/hadoop/tmp</value>
        </property> 
    </configuration>
     
    6.3配置hdfs-site.xml
     
    <configuration>
       <property>
    <name>dfs.replication</name>
    <value>2</value>
       </property>
    </configuration>
     
    6.4配置mapred-site.xml
     
    <configuration>
        <property>
    <name>mapred.job.tracker</name>
    <value>hadoop100:9001</value>
    <description>change your own hostname</description>
        </property>
    </configuration>
     
    6.5配置masters文件
     
    将masters里的localhost改成hadoop100
     
    6.6配置slaves文件
     
    将slaves里的localhost改成
    hadoop101
    hadoop102
     
    七、向其他机器复制jdk以及hadoop和一些配置
     
    7.1分发hosts到其他机器(root用户)
     
    scp -r /etc/hosts root@hadoop101:/etc/
    scp -r /etc/hosts root@hadoop102:/etc/
     
    7.2 分发java(root用户)
     
    scp -r /usr/local/jdk1.6.0_30 root@hadoop101:/usr/local/
    scp -r /usr/local/jdk1.6.0_30 root@hadoop102:/usr/local/
     
    7.3分发环境变量/etc/profile(root用户)
     
    scp -r /etc/profile root@hadoop101:/etc/
    scp -r /etc/profile root@hadoop102:/etc/
     
    分别通过ssh远程登录其他电脑
    执行source /etc/profile 
    分别验证: java -version
    ping hadoop101
    ping hadoop100
     
    7.4分发hadoop(root用户)
     
    scp -r /usr/local/hadoop/ root@hadoop101:/usr/local/hadoop/
    scp -r /usr/local/hadoop/ root@hadoop102:/usr/local/hadoop/
    再通过ssh远程登录其他电脑修改hadoop权限,如5.2所示。
    再分别验证:hadoop
     
    八、格式化hdfs
    在hadoop100,hadoop101, hadoop102的hadoop用户下
    执行命令 hadoop namenode -format 
     
    九、启动hadoop
    在hadoop100 上执行 start-all.sh
    用jps检验
    hadoop100上有

    32387 Jps
    32283 JobTracker
    32198 SecondaryNameNode
    32021 NameNode

    hadoop101和hadoop102上有

    30770 TaskTracker
    30866 Jps
    30666 DataNode

    说明运行成功,。,这时你可以运行个wordcount这个小例子体验一下、。

  • 相关阅读:
    c语言l博客作业04
    【 js 基础 】【 源码学习 】 深浅拷贝
    【 js 片段 】如何组织表单的默认提交?【亲测有效】
    【 js 性能优化】【源码学习】underscore throttle 与 debounce 节流
    【 js 片段 】移动端适配简易步骤
    【 js 模块加载 】【源码学习】深入学习模块化加载(node.js 模块源码)
    【 js 片段 】点击空白或者页面其他地方,关闭弹框
    【 js 算法类】这么全的数组去重,你怕不怕?
    【 js 工具 】如何使用Git上传本地项目到github?(mac版)
    【 js 工具 】如何在Github Pages搭建自己写的页面?
  • 原文地址:https://www.cnblogs.com/arbitrary/p/3902780.html
Copyright © 2020-2023  润新知