hadoop集群搭建--伪分布式

前情提要。我们搭建了单节点也就是本地hadoop集群。我直接以此为基础 扩展到伪分布式集群

目录

一、hadoop伪分布式

操作系统

软件要求 

三、配置详情

1.安装虚拟机和配置网络

2. 上传jdk和hadoop

   安装 VMware tools

    设置共享文件夹

 3. 安装jdk和hadoop

解压jdk和hadoop 

创建软链接

 4. 配置环境变量

配置hadoop配置文件

1.hadoop-env.sh

2.croe-site.xml

3.hdfs-site.xml 

 配置ssh无密登录

5.初始化以及启动守护线程

6.集群展示和小案例 

 



一、hadoop伪分布式

伪分布式集群(pseudo distributed cluster)是指在一台主机上模拟多个主机;hadoop的守护程序在本地计算机(虚拟机)上运行,模拟集群环境,并且是相互独立的Java进程。

在这种模式下,Hadoop使用的是分布式文件系统,各个作业也是由ResourceManager服务来管理的独立进程;与单节点模式相比,多了代码调试功能,允许检查内存使用情况,HDFS输入输出,以及其他的守护进程交互;类似于完全分布式模式下的集群。因此这种模式常用来开发测试Hadoop程序的执行是否正确。

操作系统

  • w10+vmware

软件要求 

三、配置详情

1.安装虚拟机和配置网络

实际上单节点是不需要配置网络的。因为要从w10上将jdk和hadoop安装包上传至虚拟机。并且我这台机器需要继续配置伪分布以及完全分布。所以我需要配置网络环境。配置网络其实很简单。不需要的朋友也可以试着配置一下。linux还是很有意思的

 我的虚拟机是由一个空白的安装了linux6.8桌面版复制而来。因此 我需要修改虚拟机的mac地址。如果你的虚拟机是创建而来,那么可以跳过修改mac地址的步骤。网络使用nat模式。

  1. sudo vim /etc/udev/rules.d/70-persistent-net.rules                   ----查看网卡信息以及记忆mac地址 
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# PCI device 0x8086:0x100f (e1000)
#SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:90:ab:e6", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"


----------将此处配置注释或删除 



# PCI device 0x8086:0x100f (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:b2:e7:66", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"


----------记住网卡mac地址 即00:0c:29:b2:e7:66  并将网卡名改为 eth0

2.sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0              -----修改网卡配置文件

DEVICE=eth0
HWADDR=00:0C:29:B2:E7:66  ------将mac地址修改为刚才的mac地址
TYPE=Ethernet
UUID=c74cd800-bd98-4b84-9b67-821f3f8c14a1
ONBOOT=yes                -------将no改为yes 设置开机自动读取网络配置
NM_CONTROLLED=yes
BOOTPROTO=static          -------将dhcp改为static 设置为nat模式
IPADDR=192.168.61.70      -------添加ipaddr ip为vm8网卡同网段 查看方式vmware 编辑-虚拟网络编辑    
                                 器-vm8网卡-nat设置。 或者直接在window下ipconfig 查看vm8的ip
NETMASK=255.255.255.0     ------- 添加netmask 子网掩码 默认为255.255.255.0   
GATEWAY=192.168.61.2      -------添加gateway 默认网关 值为ip最后一位改为2
DNS1=192.168.61.2         -------添加 dns1  默认值何网关相同

3.修改主机名 和域名映射(因为我之后要搭建一个三个节点的完全分布集群 所以我的映射里面添加了三个从节点的ip) 

        sudo vim /etc/sysconfig/network       -------修改主机名

NETWORKING=yes
HOSTNAME=Ms2   --------------将此处改为主机名

          sudo vim /etc/hosts                         ---------修改主机映射

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.61.70 Ms2          --------------ip 主机名   可以忽略下面三条
192.168.61.71 sv1
192.168.61.72 sv2
192.168.61.72 sv3

注 以上配置生效最好重启 

2. 上传jdk和hadoop

   安装 VMware tools

虚拟机->安装 VMware tools工具->解压缩压缩包到桌面->开启终端->切换root用户->执行可执行文件
    ->一路回车

    设置共享文件夹

点击虚拟主机->设置->选项->共享文件夹-->启动-->选择window系统上要共享的文件夹  (设置共享文件夹时需要重启)

 3. 安装jdk和hadoop

    首先验证网络配置 即

[[email protected] 桌面]$ ping baidu.com
PING baidu.com (123.125.114.144) 56(84) bytes of data.
64 bytes from 123.125.114.144: icmp_seq=1 ttl=128 time=26.2 ms
64 bytes from 123.125.114.144: icmp_seq=2 ttl=128 time=25.7 ms
64 bytes from 123.125.114.144: icmp_seq=3 ttl=128 time=26.7 ms
64 bytes from 123.125.114.144: icmp_seq=4 ttl=128 time=25.8 ms
如果有数据传输 即成功

解压jdk和hadoop 

  1. mkdir ~/apps                                                                                      -------在用户主目录下创建apps目录
  2.  cp /mnt/hgfs/1707/jdk-8u172-linux-x64.tar.gz ~/apps/                      --------将共享文件夹中的jdk复制到 apps               
  3. cp /mnt/hgfs/1707/hadoop-2.7.3.tar.gz ~/apps/                                 --------将共享文件夹中的hadoop复制到 apps 
  4.  tar -zvxf ~/apps/jdk-8u172-linux-x64.tar.gz                                      ---------解压jdk
  5. tar -zvxf ~/apps/hadoop-2.7.3.tar.gz                                                 ---------解压hadoop

创建软链接

创建软链接 是为了更换软件时不需要修改环境变量

  1. [[email protected] apps]$ ln -s ~/apps/hadoop-2.7.3 hadoop                         -------创建hadoop的链接
  2. [[email protected] apps]$ ln -s ~/apps/jdk1.8.0_172 jdk                                 -------创建jdk的软链接

 4. 配置环境变量

  1. [[email protected] apps]$ vim ~/.bash_profile                                -------打开环境配置文件
  2. specific environment and startup programs
    PATH=$PATH:$HOME/bin
    JAVA_HOME=/home/ms/apps/jdk                                      -------jdk主目录
    PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin    -------配置执行文件指向jdk
    HADOOP_HOME=/home/ms/apps/hadoop                       -------hadoop主目录
    PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin    -------------配置执行文件指向hadoop
    export PATH JAVA_HOME HADOOP_HOME                    -------设置自动加载
     

  3. source ~/.bash_profile                                                       --------------读取配置文件

  4. java                                                                                    ----------------测试jdk

    用法: java [-options] class [args...]
               (执行类)
       或  java [-options] -jar jarfile [args...]
               (执行 jar 文件)
    其中选项包括:
        -d32      使用 32 位数据模型 (如果可用)
        -d64      使用 64 位数据模型 (如果可用)
        -server      选择 "server" VM
                      默认 VM 是 server.

        -cp <目录和 zip/jar 文件的类搜索路径>
        -classpath <目录和 zip/jar 文件的类搜索路径>
                      用 : 分隔的目录, JAR 档案
                      和 ZIP 档案列表, 用于搜索类文件。
        -D<名称>=<值>
                      设置系统属性
        -verbose:[class|gc|jni]
                      启用详细输出
        -version      输出产品版本并退出
        -version:<值>
                      需要指定的版本才能运行
        -showversion  输出产品版本并继续
        -jre-restrict-search | -no-jre-restrict-search
                      在版本搜索中包括/排除用户专用 JRE
        -? -help      输出此帮助消息
        -X            输出非标准选项的帮助
        -ea[:<packagename>...|:<classname>]
        -enableassertions[:<packagename>...|:<classname>]
                      按指定的粒度启用断言
        -da[:<packagename>...|:<classname>]
        -disableassertions[:<packagename>...|:<classname>]
                      禁用具有指定粒度的断言
        -esa | -enablesystemassertions
                      启用系统断言
        -dsa | -disablesystemassertions
                      禁用系统断言
        -agentlib:<libname>[=<选项>]
                      加载本机代理库 <libname>, 例如 -agentlib:hprof
                      另请参阅 -agentlib:jdwp=help 和 -agentlib:hprof=help
        -agentpath:<pathname>[=<选项>]
                      按完整路径名加载本机代理库
        -javaagent:<jarpath>[=<选项>]
                      加载 Java 编程语言代理, 请参阅 java.lang.instrument
        -splash:<imagepath>
                      使用指定的图像显示启动屏幕
    有关详细信息, 请参阅 http://www.oracle.com/technetwork/java/javase/documentation/index.html。
     

  5. hadoop                                                                                ------------------测试hadoop

    Usage: hadoop [--config confdir] [COMMAND | CLASSNAME]
      CLASSNAME            run the class named CLASSNAME
     or
      where COMMAND is one of:
      fs                   run a generic filesystem user client
      version              print the version
      jar <jar>            run a jar file
                           note: please use "yarn jar" to launch
                                 YARN applications, not this command.
      checknative [-a|-h]  check native hadoop and compression libraries availability
      distcp <srcurl> <desturl> copy file or directories recursively
      archive -archiveName NAME -p <parent path> <src>* <dest> create a hadoop archive
      classpath            prints the class path needed to get the
      credential           interact with credential providers
                           Hadoop jar and the required libraries
      daemonlog            get/set the log level for each daemon
      trace                view and modify Hadoop tracing settings

    Most commands print help when invoked w/o parameters

配置hadoop配置文件

1.hadoop-env.sh

  1.  [[email protected] ~]$ vim ~/apps/hadoop/etc/hadoop/hadoop-env.sh
  2. export JAVA_HOME=/home/ms/apps/jdk                           ----------将此处修改为jdk路径

2.croe-site.xml

  1. vim ~/apps/hadoop/etc/hadoop/core-site.xml             
  2. <configuration>                                                           -----------------添加以下属性
     <property>
            <name>fs.defaultFS</name>                              -----------------指定文件系统名称 和post ,host
           <value>hdfs://localhost:9000</value>
      </property>
    </configuration>

3.hdfs-site.xml 

  1.   vim ~/apps/hadoop/etc/hadoop/hdfs-site.xml              
  2. <configuration>
    <property>
                <name>dfs.replication</name>               -------------------指定文件副本数
                <value>1</value>
           </property>
    </configuration>
     

 配置ssh无密登录

  1. ssh-keygen -t rsa                       ------------------一直回车
  2. cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys         --------------------将公钥发出
  3. chmod 600 ~/.ssh/authorized_keys                      ---------------修改权限为600  
  4. ssh localhost     ----测试ssh无密登录结果
  5. Last login: Fri Mar 29 02:34:28 2019 from localhost

5.初始化以及启动守护线程

 初始化namenode进程(建议重启后)

启动守护线程

6.集群展示和小案例 

 打开火狐浏览器 网址localhost:50070 可以看到有一个数据节点

小案例

 创建一个文件夹

 

  1. [[email protected] 桌面]$ hdfs dfs -mkdir /input
  2. [[email protected] 桌面]$ hdfs dfs -put ~/apps/hadoop/etc/hadoop /input
  3. [[email protected] 桌面]$ hdfs dfs -get /input
    [[email protected] 桌面]$ ls -l input/
    总用量 4
    drwxrwxr-x. 2 ms ms 4096 3月  29 03:10 hadoop
    [[email protected] 桌面]$ 

     

ok 搭建完成