首页 > 代码库 > vmware搭建hadoop集群完整过程笔记

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服务。显示红色框里面的三个内容则表示配置成功。

    技术分享

vmware搭建hadoop集群完整过程笔记