Hadoop 分布式环境搭建

1.集群机器:

1台 装了 ubuntu 14.04的 台式机

1台 装了ubuntu 16.04 的 笔记本     (机器更多时同样适用)

搭建步骤:

准备工作:

使两台机器处于同一个局域网:相互能够 ping 通

      主机名称                     IP地址
soyo-VPCCB3S1C   192.168.1.130   (master-->namenode)
soyo-slave01        192.168.1.126        (datanode)

想要更改主机名称的话:sudo vim /etc/hostname   之后重启

之后两台机器都修改 /etc/hosts/ 设置为:

2.配置ssh无密码登录本机和访问集群机器

2台主机电脑分别运行如下命令,测试能否连接到本地localhost

ssh localhost

结果:这样说明没问题

如果不能登录本地:

  1. sudo apt-get openssh-server
  2. ssh-keygen -t rsa -P ""             // 生成ssh公钥
  3. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys          // (authorized_keys 刚开始是没有的) SSH无密码登陆授权
    在保证了2台主机电脑都能连接到本地localhost后,还需要让master主机免密码登录slave01。在master执行如下命令,将master的id_rsa.pub传送给slave01主机。
    scp 是 secure copy 的简写,用于在 Linux 下进行远程拷贝文件,类似于 cp 命令,不过 cp 只能在本机中拷贝。
    scp ~/.ssh/id_rsa.pub soyo@soyo-slave01:/home/soyo/

     这个时候在soyo-slave01主机的/home/soyo/路径下可以找到 id_rsa.pub 这个文件

  1. 接着在slave01主机上将master的公钥加入各自的节点上,在soyo-slave01执行如下命令:
  2. cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
  3. rm ~/id_rsa.pub
  4. 配置完成

3.在master(soyo-VPCCB3S1C)测试连接soyo-slave01节点:

 

4.Hadoop分布式配置:

hadoop而而配置文件都位于/usr/local2/hadoop/etc/hadoop目录下。

总共要配置 5 个文件:slaves,core-site.xml,hdfs-site.xml,mapred-site.xml.template(复制后修改名字为mapred-site.xml),yarn-site.xml
slaves:

core-site.xml:

hdfs-site.xml:

mapred-site.xml

yarn-site.xml

这里如果不配置:

        <name>yarn.nodemanager.resource.memory-mb</name>
        <name>yarn.nodemanager.resource.cpu-vcores</name>

soyo-slave01上的NodeManager无法启动

      memory-mb(可用内存大小) value:参照Linux分类的总结--> http://www.cnblogs.com/soyo/p/7908430.html

      cpu-vcores (CPU核数)      value:参照Linux分类的总结-->  http://www.cnblogs.com/soyo/p/7908365.html

5.给节点分发Hadoop配置:

  当前路径为:/usr/local2

tar -zcf ~/hadoop.tar.gz ./hadoop  
(如果Hadoop之前被使用过最好删除 temp 和logs 再分发,每次删除这两个文件后,启动Hadoop前都需要执行:hdfs namenode -format 不然namenode会无法启动,这个下面有讲)

    cd  /home/soyo

scp ./hadoop.tar.gz soyo-slave01:/home/soyo   (这里节点写成:soyo@soyo-slave01:/home/soyo 也可以)

在soyo-slave01节点上执行:
sudo tar -zxf ~/hadoop.tar.gz -C /usr/local2
sudo chmod -R 777 hadoop

6.启动Hadoop集群:

 任意路径下执行:

  hdfs namenode -format

   start-all.sh

(想要在任意路径下可以启动Hadoop 需要配置:bashrc)

vim ~/.bashrc:

 source ~/.bashrc

7.查看Hadoop分布式是否搭建成功:

在master节点:jps

在 slave节点上:jps

要保证master,slave 的shell中的进程都被启动(少一个都表示没有配置成功)

8.分布式计算:

首先创建 HDFS 上的数据存放目录

hdfs dfs  -mkdir  -P  /user/soyo

往HDFS中导入数据:

hdfs dfs  -put /usr/local2/hadoop/etc/hadoop/*.xml /user/soyo

执行:

hadoop jar /usr/local2/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.4.jar grep /user/soyo /user/soyo_output 'dfs[a-z.]+'

可以通过WEB页面查看HDFS上存储的数据以及计算的结果文件:soyo-VPCCB3S1C:50070 (直接浏览器输入这个网址)

同样可以通过 Web 界面查看任务进度:soyo-VPCCB3S1C:8088 (直接浏览器输入这个网址)   如何yarn资源管理器启动失败这个网页是打不开的

9.把计算结果保存到本地:

hdfs dfs -get  /user/soyo_output  /home/soyo

10.DataNode 节点负责保存HDFS上的 数据,那实质的计算过程也是由它做吗?(很无奈啊......图片是反的)

DataNode:

NameNode:

可以看出计算的过程也是由DataNode来承担的

原文地址:https://www.cnblogs.com/soyo/p/7868282.html