zoukankan      html  css  js  c++  java
  • 搭建Hadoop集群 (一)

    上面讲了如何搭建Hadoop的Standalone和Pseudo-Distributed Mode(搭建单节点Hadoop应用环境), 现在我们来搭建一个Fully-Distributed Mode的Hadoop Cluster.

    环境

    虚拟机: VirtualBox 5

    Server操作系统: CentOS-6.7-x86_64-LiveCD

    Hadoop版本: 2.6.2

    安装Linux虚拟机

    安装虚拟机, 这里一共安装3台, hostname分别取名: master, slave1, slave2. 虚拟机网络采用Bridged Adapter.

    master扮演NameNode和ResourceManager的角色. 如果你的硬件条件允许, 也可以单独为ResourceManager使用一台虚拟机, 组成masters虚拟机群.

    slave则被用作DataNode和NodeManager.

    创建hadoop专用账户

    按照正常步骤安装系统, LiveCD版本可以在安装过程中, 直接创建新用户, 用户名设为hm, 作为hadoop的专用账户.

    或者使用命令行新建hadoop用户和组, 并设置密码:

    [root@localhost /]# groupadd hadoop
    [root@localhost /]# useradd -s /bin/bash -d /home/hm -m hm -g hadoop
    [root@localhost /]# passwd hm

    为hm添加sudoer权限

    [root@localhost /]# chmod u+w /etc/sudoers
    [root@localhost /]# vi /etc/sudoers
    [root@localhost /]# chmod u-w /etc/sudoers

    在sudoers中修改:

    ## Allow root to run any commands anywhere
    root   ALL=(ALL)    ALL
    hm      ALL=(ALL)    ALL
    
    :x 保存退出
    [root@localhost /]# chmod u-w /etc/sudoers
    [root@localhost /]# reboot

    修改HostName

    以master机器为例:

    [hm@localhost ~]$ sudo vi /etc/hosts

    为你的hostname映射正确的ip (ip根据你的ifconfig结果来定)

    192.168.1.105 master
    192.168.1.106 slave1
    192.168.1.107 slave2

    再把network中的hostname改成master

    [hm@master ~]$ sudo vi /etc/sysconfig/network

    重启生效.

    安装VirtualBox Guest Additions增强包(Optional - 推荐)

    方便后续操作. (主机-虚机之间文件拖拽, 鼠标集成, 共享剪贴板等等)

    首先确认Internet访问正常

    如果你的网络有防火墙, 去左上角菜单中, System->Preferences->Network Proxy中设置.

    同时, 把master, slave1, slave2加入到proxy的Ignored Hosts里面.

    最后, 修改yum配置使得它能从网上下载安装包和相关依赖.

    打开Terminal:

    [hm@master ~]# sudo vi /etc/yum.conf

    添加: (无需用户名密码的话, 最后两行省略)

    # The proxy server - proxy server:port number
    proxy=http://yourproxy.yourdomain.com:yourport
    # The account details for yum connections
    proxy_username=yourusername
    proxy_password=yourpassword

    安装VirtualBox增强包

    点击Devices->Insert Guest Additions CD Image.. 双击光盘运行安装.

    如果遇到安装Failed:

    安装kernel-devel package(安装增强包需要用到它): 该package包含内核开发环境所需的内核头文件, 以及编译它们所需的Makefile. (CentOS6.7 LiveCD版, 以及某些RH发行版, 默认无附带)

    [hm@master ~]# sudo yum install kernel-devel-2.6.32-573.el6.x86_64 gcc

    再次尝试安装增强包, 应该就能成功. (如果提示OpenGL Support Module Failed, 可忽略)

    点击Devices->Shared ClipBoard和Drag and Drop, 设置成Bidirectional.

    重启虚拟机. 则可以和主机共享剪贴板, 并且可以相互拖拽文件.

    安装配置SSH和JAVA

    安装软件包

    首先确认是否已经有安装: (其中openssh-server只要确保master上有即可)

    [hm@master ~]$ rpm -qa | grep ssh
    [hm@master ~]$ rpm -qa | grep jdk

    可以看到openssh的server和client都已经安装, 因此只需要安装jdk即可. (hadoop查看守护进程需要用到jdk里的jps命令, 需要openjdk的devel版本, 或者sun jdk)

    [hm@master ~]$ yum search openjdk
    [hm@master ~]$ sudo yum install java-1.7.0-openjdk-devel.x86_64

    查看一下安装目录, 记下来将来配置hdfs要用.

    [hm@master ~]$ rpm -ql java-1.7.0-openjdk-devel-1.7.0.95-2.6.4.0.el6_7.x86_64

    得到jdk的绝对安装路径: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.95.x86_64

    Optional - 克隆创建slave1和slave2

    先Power Off master虚拟机, 右键点选它, clone.

    由于我们要让三台虚拟机在同一个网段运行, 推荐勾选Reinitialize the MAC address of all network cards. 如果不幸遇到网卡找不到或者不匹配, 需自己手动修改/etc/sysconfig/network-scripts/ifcfg-eth*. 具体自行谷歌.

    Full Clone, 成功后启动slave虚拟机.

    修改hosts和network两个文件, 参考上文.

    这时输入ping master, ping slave1之类的命令, 应该相互可以通讯. (别忘记将slave的信息放入master的hosts文件中)

    192.168.1.105 master
    192.168.1.106 slave1
    192.168.1.107 slave2

    在master上启动SSH Server

    检查ssh server的进程是否启动

    [hm@master ~]$ ps -e|grep sshd

    如果没有, 手动启动该进程

    [hm@master ~]$ sudo /etc/init.d/sshd start

    Optional - 设置sshd开机启动

    先检查当前设置

    [hm@master ~]$ chkconfig --list sshd
    sshd               0:off    1:off    2:off    3:off    4:off    5:off    6:off

    设成开机启动

    [hm@master ~]$ sudo chkconfig sshd on

    再次检查可以看到2-5项都变成on了.

    设置master和slave1, slave2之间免密码SSH登录

    单机免密码登录

    主要目的是看看ssh是否正常工作

    [hm@master ~]$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
    [hm@master ~]$ cat .ssh/id_dsa.pub >> .ssh/authorized_keys
    [hm@master ~]$ ssh localhost

    成功登录后, 输入exit退出当前ssh登录. 以后再输入ssh localhost就可以直接无密码登录. 如果再次登录还需要密码, 尝试把authorized_keys权限改为600.

    master免密码SSH登录slave

    登录slave1, 把master的公钥拷贝到slave的authorized_keys中.

    [hm@slave1 ~]$ scp hm@master:~/.ssh/id_dsa.pub .ssh/master_dsa.pub
    [hm@slave1 ~]$ cat .ssh/master_dsa.pub >> .ssh/authorized_keys

    用hm账户登录master, 输入ssh slave1, 首次连接后, 之后即可无密码访问slave1. 同理为slave2配置免密码访问.

    到此, master-slave结构的虚拟机集群搭建完毕, 接下来开始安装Hadoop, 参见 搭建Hadoop集群 (二)

  • 相关阅读:
    线性代数思维导图——3.向量
    微分中值定理的基础题型总结
    构造函数
    Python课程笔记(七)
    0241. Different Ways to Add Parentheses (M)
    0014. Longest Common Prefix (E)
    0013. Roman to Integer (E)
    0011. Container With Most Water (M)
    0010. Regular Expression Matching (H)
    0012. Integer to Roman (M)
  • 原文地址:https://www.cnblogs.com/haibinyuan/p/5153681.html
Copyright © 2011-2022 走看看