zoukankan      html  css  js  c++  java
  • vmware搭建hadoop集群完整过程笔记

    搭建hadoop集群完整过程笔记

    一、虚拟机和操作系统

      环境:ubuntu14+hadoop2.6+jdk1.8

      虚拟机:vmware12

     

    二、安装步骤:

    先在一台机器上配置好jdk和hadoop:

      1.新建一个hadoop用户

        用命令:adduser hadoop

      2.为了让hadoop用户有sudo的权限:

        用root用户打开sudors文件添加红色框里面的内容:

        打开文件:

        

        添加内容:

        

       3.配置jdk,我把jdk的压缩包放在了hadoop的用户目录下,然后也解压在当前目录下

        

        修改配置文件(配置环境变量):在下面这个位置添加红色框里面的内容,其中红色下划线上面的内容根据个人jdk的安装路径而修改

        

        修改配置文件之后要让配置文件起效,输入以下命令:

        

        输入命令:java -version,如果出现jdk的版本则表示安装成功,如下:

        

        *****************到这里,成功配置了jdk,接下来是配置hadoop*********************

        4.同样是把hadoop的压缩包放到hadoop的用户主目录下(/home/hadoop),然后解压在当前目录下:

        

        5.修改配置文件(配置hadoop环境变量),在刚刚配置的jdk环境变量上添加内容:

        

        修改后,也要让配置文件重新起效

        

        然后进入hadoop的安装目录的bin目录下

        

        输入以下命令查看hadoop的版本,如果能看到hadoop的版本信息,则证明配置成功:

        

        

        ************************以上以及配置好了单机版本的hadoop环境***********************************

    接下来克隆配置好的机器,克隆两台:打开vmvare:  虚拟机>管理>克隆。(建议新克隆出来的两台机器分别命令为slave1,slave2)

      

      一直点击 下一步 完成克隆。其中克隆类型选择创建完整克隆。

      

      1.分别修改各虚拟机的hostname,分别为master,slave1,slave2

       

      2.修改三台虚拟机的hosts文件,这样接下来就不需要记住ip地址了,用主机名代替ip地址就可以了

        (ip地址分别为三台机器的Ip地址,可以分别在三台机器上通过ifconfig命令查看)

       

       这一步完成后,最好重启一次系统,以便生效。然后可以用ping master(或slave1、slave2)试下,正常的话,应该能ping通

       注:hostname不要命名为“xxx.01,xxx.02”之类以“.数字”结尾,否则到最后hadoop的NameNode服务将启动失败。

       3.设置静态ip

        master主机设置静态ip,在slave上也要参考设置修改成具体的ip

        执行命令

        sudo  gedit   /etc/network/interfaces

         打开文件修改成已下内容

        auto lo

        iface lo inet loopback

        auto eth0

        iface eth0 inet static

        address 192.168.140.128   //这里是本机器的Ip地址

        netmask 255.255.255.0      //不用修改

        network 192.168.140.0       //网段,根据Ip修改

        boardcast 192.168.140.255    //根据Ip修改

        gateway 192.168.140.2           //网关,把ip地址后面部门修改成2

        4.配置ssh面密码登录  

        在ubuntu上在线安装

        执行命令

        sudo  apt-get  install  ssh

        **********************************************

        配置ssh的实现思路:

        在每台机子上都使用ssh-keygen生成public key,private key

        所有机子的public key都拷到一台机子如master上

        在master上生成一个授权key文件authorized_keys

        最后把authorized_keys拷给所有集群中的机子,就能保证无密码登录

        ***************************************************

        实现步骤:

        1 .先在master上,在当前用户目录下生成公钥、私钥对

        执行命令

        $cd  /home/hadoop      

        $ssh-keygen  -t  rsa  -P ''

         即:以rsa算法,生成公钥、私钥对,-P ''表示空密码。

        该命令运行完后,会在个人主目录下生成.ssh目录,里面会有二个文件id_rsa(私钥) ,id_rsa.pub(公钥)

         2 .导入公钥

         执行命令

        cat  .ssh/id_rsa.pub  >>  .ssh/authorized_keys

         执行完以后,可以在本机上测试下,用ssh连接自己

        执行命令

        $ssh master

         如果不幸还是提示要输入密码,说明还没起作用,还有一个关键的操作

        查看权限,如果是属于其他用户的,需要修改该文件给其他用户权限

        执行命令

        chmod  644  .ssh/authorized_keys

         修改文件权限,然后再测试下 ssh master,如果不需要输入密码,就连接成功,表示ok,一台机器已经搞定了。

        如出现问题试解决

        请先检查SSH服务是否启动,如果没启动,请启动!

        如果没有.ssh目录则创建一个:

        执行命令

        $cd  /home/hadoop

        $mkdir     .ssh

        如无权限,使用命令修改要操作文件夹的owner为当前用户:

        执行命令

        sudo  chown  -R  hadoop  /home/hadoop

        3 .在其它机器上生成公钥、密钥,并将公钥文件复制到master

         以hadoop身份登录其它二台机器 slave1、slave2,执行 ssh-keygen -t rsa -P  '' 生成公钥、密钥

         然后用scp命令,把公钥文件发放给master(即:刚才已经搞定的那台机器)

        执行命令

        在slave1上:

        scp  .ssh/id_rsa.pub   hadoop@master:/home/hadoop/id_rsa_1.pub

        在slave2上:

        scp  .ssh/id_rsa.pub  hadoop@master:/home/hadoop/id_rsa_2.pub

        这二行执行完后,回到master中,查看下/home/hadoop目录,应该有二个新文件id_rsa_1.pub、id_rsa_2.pub,

        然后在master上,导入这二个公钥

         执行命令

        $cat id_rsa_1.pub >> .ssh/authorized_keys

        $cat id_rsa_2.pub >> .ssh/authorized_keys

        这样,master这台机器上,就有所有3台机器的公钥了。

         4 .将master上的“最全”公钥,复制到其它机器

        继续保持在master上

        执行命令

        $scp .ssh/authorized_keys  hadoop@slave1:/home/hadoop/.ssh/authorized_keys

        $scp .ssh/authorized_keys  hadoop@slave2:/home/hadoop/.ssh/authorized_keys

        修改其它机器上authorized_keys文件的权限

        slave1以及slave2机器上,均执行命令

        chmod  600  .ssh/authorized_keys

        5. 验证

        在每个虚拟机上,均用命令  ssh+其它机器的hostname 来验证,如果能正常无密码连接成功,表示ok

        如在slave1

        执行命令

        ssh  slave1

        ssh  master

        ssh  slave2

        分别执行以上命令要保证所有命令都能无密码登录成功。

        5.修改hadoop配置文件

          先配置hdfs,所以先修改4个配置文件:core-site.xml , hdfs-site.xml , hadoop-env.sh , slaves

        到hadoop的该目录下:

        

        1).修改core-site.xml

          
        上面配置的路径/home/hadoop/tmp,如果不存在tmp文件夹,则需要自己新建tmp文件夹

        2.修改hdfs-site.xml

        

        3.修改hadoop-env.sh,(有教程上面还需要配置HADOOP_HOME的环境变量,本人这里没有配置但是没问题,因为在前面已经配置过了)

        

        4.修改slaves,删掉原来的内容,添加其他两个节点的主机名

         

        5.分发到集群的其它机器

        把hadoop-2.6.0文件夹连同修改后的配置文件,通过scp拷贝到其它2台机器上。

        执行命令

        $scp -r hadoop-2.6.0/  hadoop@slave1: hadoop-2.6.0

        修改这四个文件之后,hdfs服务就配置成功了。通过运行start-dfs.sh启动hdfs服务,检查是否配置成功。

        

        启动完毕之后,输入jps,如果显示NameNode和Jps则表示配置成功。

        6.接下来配置mapreduce,要修改yarn-site.xml ,  mapred-site.xml文件

        修改yarn-site.xml文件

        

        7.修改mapred-site.xml

        

        8.分发到集群的其它机器

        把hadoop-2.6.0文件夹连同修改后的配置文件,通过scp拷贝到其它2台机器上。

        执行命令

        $scp -r hadoop-2.6.0/  hadoop@slave1: hadoop-2.6.0

        运行start-yarn.sh脚本,启动mapreduce服务。显示红色框里面的三个内容则表示配置成功。

        

  • 相关阅读:
    我是如何基于angular+requirejs+node做SPA项目架构的
    阿里云无线&前端团队是如何基于webpack实现前端工程化的
    angularjs源码分析之:angularjs执行流程
    你所必须掌握的三种异步编程方法callbacks,listeners,promise
    自从用了Less 编写css,你比以前更快了~
    对象的深浅拷贝
    throttle/debounce: 为你的cpu减减压(前端性能优化)
    jekyll : 使用github托管你的博客
    html5 drag api详解
    用setTimeout 代替 setInterval实时拉取数据
  • 原文地址:https://www.cnblogs.com/Zchaowu/p/7350922.html
Copyright © 2011-2022 走看看