Ubunutu16.04完成Hadoop集群式搭建

245 阅读4分钟

#Ubunutu16.04完成Hadoop集群式搭建

版本情况

VMwareWorkstation 12.5 JDK1.8.0_321 HADOOP-2.7.1

hadoop分布式工作机制说明

前面伪分布式配置时,只配置了HDFS的存储,并没有启用yarn进行资源管理,也未指定MapReduce执行所依赖的框架。要完成分布式集群搭建,接下来要完成下列工作: 在hdfs-site.xml中修改hdfs的副本数、指明SecondaryNamenode服务器 配置yarn集群 yarn-env.sh:指明yarn基本运行环境 yarn-site.xml:指明ResourceManager服务器、NodeManager服务 配置MapReduce在yarn集群上运行 mapred-env.sh:指明MapReduce基本运行环境 mapred-site.xml:指定运行在 yarn 框架上 配置slaves:用于标识集群中所有DataNode

基础配置

规划好集群机器数及各自的IP与机器名 通过VM查看可用IP地址范围:编辑—>虚拟网络编辑器 在这里插入图片描述 在这里插入图片描述

在这里插入图片描述

上图设置与你规划的地址有关 如果出现虚拟机ping得通百度 有下载ssh但是xshell连接不上 请到网络适配器里看看vmware8的网卡 将ip地址改为我们要规划的网段范围内的地址 在这里插入图片描述

规划IP地址 集群有3台机器: Master 192.168.80.140 myslave1 192.168.80.141 myslave2 192.168.80.142

1 先安装好主服务器,完成下面操作 创建虚拟机、安装ubuntu系统、换源、更新、安装lrzsz、ssh、免密配置、jdk;(tomcat、mysql可选) 这里我们直接从之前配置好的hadoop伪分布式克隆作为主服务器 2指定机器名 sudo nano /etc/hostname 3配置固定IP sudo nano /etc/network/interfaces auto ens33 iface ens33 inet static address 192.168.80.140 netmask 255.255.255.0 gateway 192.168.80.2 dns-nameservers 192.168.80.2 dns-nameservers 114.114.114.114 dns-nameservers 8.8.8.8 4设置集群IP地址与主机名的映射关系(做完这步操作最好重启机器) sudo nano /etc/hosts 127.0.0.1 localhost #127.0.1.1 Master.localdomain Master 192.168.80.140 Master Master.lmu.cn 192.168.80.141 myslave1 myslave1.lmu.cn 192.168.80.142 myslave2 myslave2.lmu.cn

主服务的配置

1) cd /app/hadoop-2.7.1/etc/hadoop 配置hadoop-env.sh(hadoop基本运行环境) export JAVA_HOME=${JAVA_HOME} 2 配置core-site.xml

<configuration>
<!--用于设置hadoop的文件系统NameNode节点,由URI指定-->
<property>
        <name>fs.defaultFS</name>
        <value>hdfs://Master:9000</value>
</property>
<!--配置hadoop的临时工作目录-->
<property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
</property>
</configuration>

3)配置hdfs-site.xml

<configuration>
       <!--指定HDFS的副本数-->
            <property>
                 <name>dfs.replication</name>
                 <value>2</value>
            </property>
            <property>
                 <name>dfs.namenode.name.dir</name>
                 <value>file:/usr/local/hadoop/tmp/dfs/name</value>
            </property>
            <property>
                 <name>dfs.datanode.data.dir</name>
                 <value>file:/usr/local/hadoop/tmp/dfs/data</value>
            </property>
        <!-- 50070端口默认是打开的可不设
            <property>
                  <name>dfs.http.address</name>
                 <value>192.168.80.140:50070</value>   
            </property>
        -->
        <!--seccondary namenode所在主机的IP和端口-->
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>Master:50090</value>
        </property>
</configuration>

4)配置yarn-env.sh (yarn基本运行环境)

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

5)配置yarn-site.xml

<configuration>
<!-- Site specific YARN configuration properties -->
   <!-- 指定YARN的ResourceManager的地址 -->
<property>
                <name>yarn.resourcemanager.hostname</name>
                <value>Master</value>
   </property>
<!-- 指定YARN的NodeManager的附属服务——reducer 获取数据的方式  -->
   <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
   </property>
</configuration>

6)配置mapred-env.sh (MapReduce基本运行环境)

export JAVA_HOME=/app/jdk1.8.0_321

7 配置mapred-site.xml (原本没mapred-site.xml,要由mapred-site.xml.template模板生成) cp mapred-site.xml.template mapred-site.xml,再编辑

<configuration>
        <!-- 指定MapReduce运行时框架,这里指定在Yarn上,默认是local -->
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
</configuration>

8)配置slaves,该文件中保存集群中所有slave节点的信息 myslave1 myslave2

从服务搭建

先建2个目录用于存放克隆虚拟机的文件。 关闭Master,在VM界面上右击Master,选择管理—>克隆—>虚拟机中的当前状态—>创建完整克隆,填写克隆机的名称、指定存放位置。 完成克隆后,最好将ubuntu的安装镜像包拷贝到克隆目录下,并修改克隆机的CD盘镜像

对2台克隆机分别做: 先关闭Master,再启动克隆机(因为:它们现在的IP都是一样的) 修改机器名:sudo nano /etc/hostname 改变IP地址:sudo nano /etc/network/interfaces 设置集群IP地址与主机名的映射关系(这步可不做,在主服务器上已完成) sudo nano /etc/hosts source /etc/profile

在每台主机上完成下面免密登录授权设置: 配置好ssh免密登录,会在用户的家目录下生成公私密钥文件,用ll -a查看 执行语句:ssh-copy-id Master (myslave1、myslave2),集群中的机器应两两都要这样操作一次 测试能否免密登录:ssh myslave1 返回:exit

安装NTP服务安装NTP服务 完全分布式模式由多台主机组成,各主机的时间可能存在较大差异,可能会导致执行mapreduce程序时会出错。NTP服务通过获取网络时间使集群内不同主机的时间保持一致。 sudo apt-get install ntp

格式化文件系统(只在主节点做一次即可) hdfs namenode -format 出现“successfully formatted”信息,才算格式化成功

启动与关闭集群 单节点启动服务:(一个节点一个节点启动) hadoop-daemon.sh start namenode hadoop-daemon.sh stop namenode hadoop-daemon.sh start datanode yarn-daemon.sh start resourcemanager yarn-daemon.sh start nodemanager hadoop-daemon.sh start secondarynamenode

脚本一键启动(所有节点应均已配置有双向免密登录) start-dfs.sh stop-dfs.sh start-yarn.sh stop-yarn.sh (在主节点用start-all.sh(stop-all.sh),目前已不建议这样启动)

验证hadoop进程 执行jps 在这里插入图片描述 如果没有resourceManager 请查看yarn-site.xml有没有配置好(会出现访问的了50070却访问不了8088 WEB访问 http://192.168.80.140:50070:HDFS WEB界面,查看NameNode、DataNode的信息 看到live nodes 有两个活动节点

http://192.168.80.140:8088:yarn查看当前运行进程的信息

10、测试hadoop 1)在root的~/mydata目录下创建文本文件data.txt Hello World Hello Hadoop Hadoop is very good 2)在HDFS创建input目录:hdfs dfs -mkdir /input 3)将data.txt上传到hdfs:hdfs dfs -put data.txt /input 4)查看是否上传成功:hdfs dfs -ls /input 在这里插入图片描述

或从网页上看:http://192.168.80.140:50070 Utilities —>Browse the file system 在这里插入图片描述