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集群 (二)

  • 相关阅读:
    (转)LINUX CENTOS7下安装PYTHON
    (转)python的paramiko模块
    (转)Db2数据库一次生产故障详细记录---数据库坏页
    (转)性能调优和问题诊断最佳实践,第 1 部分
    (转)性能调优和问题诊断最佳实践,第 2 部分
    字符串
    html框架
    数组
    生成伪随机数
    控制语句和循环
  • 原文地址:https://www.cnblogs.com/haibinyuan/p/5153681.html
Copyright © 2011-2022 走看看