Hadoop 环境搭建

本文详细介绍了Hadoop的理论概念,包括Hadoop的组成、HDFS和MapReduce等,并逐步指导如何在Linux环境下搭建Hadoop集群,包括创建用户、配置网络、免密码登录、安装JDK和Hadoop,以及格式化和启动Hadoop服务。同时,文章还涵盖了HDFS命令操作和Eclipse集成Hadoop的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1, 概念:

--------Hadoop是一个开源框架,它允许在整个集群使用简单编程模型计算机的分布式环境存储并处理大数据。它的目的是从单一的服务器到上千台机器的扩展,每一个台机都可以提供本地计算和存储。

 

1.1           理论

         1)集群:

               指的是多台设备构成一个完整的应用,构成该应用的设备就构成了一个集群

       2)Hadoop

                   hadoop = hdfs + 运算框架

hadoop 有两种运算框架, :    mapreduce (第一代运算框架) 和  Yarn (第二代运算框架)

 

        3) hdfs 

            hdfs = hadoop    dfs :  d ---> 分布式 ,  f  ----〉filesystem

 

         4),   mapreduce   [ 第一代框架 ] 

          hadoop : 第一代框架;  hadoop 的底层运算框架

          5) yarn 

         hadoop 第二代框架,yarn 必须在第一代运算框架启动后才能使用

 

1.2           术语

            1),m/s

m/s 值得是:master (主)和/  slave (从),

 一个管理者,多个工作者, 

在 Hadoop 配置和命令中。  主机是: namenode ,      从机是 datanode;

            2), 公钥 

 公钥 是一对加密代码,A节点将公钥发送个给其他设备后, 就能免密码登陆其他设备 。 

             3), 免密码登录;

        集群节点之间通信不需要输入密码也能互相登陆发消息 ,    实现方式是通过公钥实现的  

2。     hadoop     集群搭建

 

2.1    集群配置方案

   以下是集群设备配置方案:

        角色                         网络设备 名,     用户名,     用户组,                  [ 静态  ] IP       子网掩码           网关                    dns

master   (管理者)              node1             haduser          hadoop           192.168.3.  81     255.255.255.0     192.168.3.1

slave (工作者)              node2             haduser          hadoop           192.168.3 .82

 slave   (工作者)           node3             haduser          hadoop           192.168.3. 83

2.2   LInux 环境搭建 (root)

    1)创建用户与用户组

        useradd hduser
        groupadd hadoop 
        useradd -g hadoop hduser
        passwd  hduser
        2)修改网络用户名node1 vi /etc/sysconfig/network

 

修改为:

然后 : ESC ; shirt+ :  + wq   回车

       

3)  修改 本机名(网络用户名)解析记录

打开 host 文件

$>    vi  /etc/hosts

增加 内容: 

192.168.3.  81             node1

192.168.3.  82             node2

192.168.3.  83             node3

 

4 更改 用户拥有的超级角色(/etc/sudoers)

修改sudoers

    4)更改用户拥有超级用户角色(/etc/sudoers)
            修改/etc/sudoers文件权限为可编辑(777)


            打开sudoers文件,增加如下内容:
            将/etc/sudoers文件权限权限改回440,此文件只有只读才可用,否则不可用


        5)配置ip 子网掩码 网关  dns
            命令行修改:ls /etc/sysconfig/network-scripts/
            Linux界面修改:记得选对所有用户可用

 

 

6. 防火墙服务关闭(root)

   #>   service iptables stop

   #>   chkconfig iptables off

----------------------------------------单台--------------------------------------------------------------------------------------

 

7。 克隆两台设备   node2  node3        (安装了jdk后再克隆,) 

         v2         v3 

克隆后可能遇到的问题:

注: 如果主,从机的用户一致 (都为node1 )时, 则通过以下改正:

要重启: 

 

8。 集群设备之间免密码登录

   1。  在node 1  上生成公钥

       $>    ssh-keygen   -t  rsa

2。 将 Nodel  的公钥派发给 node2

     $>        ssh-copy-id  node2

3.    将 Nodel  的公钥派发给 node3

 $>       ssh-copy-id   node3

4.  将 Nodel  的公钥派发给 node1 

 $>          ssh-copy-id   node1

5. 将 Nodel  的公钥派发给 node1 的 localhost 

       $>          ssh-copy-id   localhost 

6. 将 Nodel  的公钥派发给 node1 的  127.0.0.1

         $>     ssh-copy-id    127.0.0.1

【主机能给从机派发,不需要输入密码,从机给主机派发就需要输入密码, 从机之间(暂时)不能相互派发】

2.3  hadoop 集群搭建

1.    jdk 安装 (usr/java)

           卸载已安装jdk 

           

             

         

 

              

 

      解压   tar 包 到    /usr/java     

            tar -zxvf /home/cg/桌面/jdk-8u171-linux-x64.tar.gz  -C  /usr/java

 

       

       

           配置环境变量

            export JAVA_HOME=/usr/java/jdk1.8.0_171
            export PATH=$JAVA_HOME/bin:$PATH
 

           生效配置文件

                    source /etc/profile

            $>  java

                    java -version  测试 版本

 

            

        

 

2.  安装 hadoop

         解压; 获取hadoop 的   tar  安装包: 解压到 /home/ hduser / 下;

              更改文件夹名为:  hadoop

$>     tar -zxvf   hadoop-2.6.5.tar.gz   -C  /home/hduser/

 $>       mv   /home/hduser/hadoop-2.6.5    /home/hduser/hadoop

以上步骤完成后获取 hadoop 主目录, /home/hduser/hadoop

   更改:hadoop 配置文件(hadoop 主目录 /etc/hadoop/ )

                               cd      etc/hadoop

 

           1.   hadoop-env.  sh        (hadoop hdfs 运行时环境文件)

$>            vi  hadoop/etc/hadoop-env.sh

                   export JAVA_HOME= /usr/java/jdk1.8.0_171

       

           2.   mapred-env.  sh       (hadoop mapreduce 运算框架运行环境文件)

                     export JAVA_HOME= /usr/java/jdk1.8.0_171

           

          3.    yarn-env.  sh               (hadoop , hdfs 运行环境文件)

                     export JAVA_HOME= /usr/java/jdk1.8.0_171

          4。 slaves (工作节点的信息)          打开 节点:  vi /hadoop/etc/hadoop/salves

           里面只有一个 : localhost: 改为:

   node2  

   node3

          5。  core-site. xml (hadoop 核心配置文件) : 

                               $>       vi  /hadoop/etc/hadoop/core-site. xml

 fs: dedfults: 该属性配置的dfs 的访问入口

》 hdfs  : // :  这是hdfs 文件系统的访问协议

 <property>
        <name>fs.defaultFS</name>
        <value>hdfs://node1:9000</value>
    </property>
<property>

         <name>hadoop.tmp.dir</name>

      <value>file:/home/hduser/hadoop/tmp</value>

</ property>    

hadoop.tmp.dir : 本地临时文件夹

file:/  是访问本地文件的协议格式

temp 文件夹默认是不存在的, 需要手动创建

【把上面的复制到命令打开的文件中】

          6。  hdfs-site. xml  (hdfs 的配置文件)

$>          vi   hadoop/etc/hadoop/hdfs-site. xml

<主机备份节点, 访问地址>

<property>
        <name>dfs.namenode.secordary.http-address</name>
        <value>node1:50090</value>
    </property>

<namenode  数据存放目录>
     <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/home/hduser/hadoop/dfs/name</value>
    </property>

《datanode 数据存放目录》
     <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/home/hduser/hadoop/dfs/data</value>
    </property>

《数据备份个数》
     <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>

< dfs.webhdfs.enabled : 可以通过web 访问 完全分布是。

>
     <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>

            

          7。  mapred-site.xml  (mapreduce  配置文件)

$>           vi   hadoop/etc/hadoop/mapred-site.xml

          <property>
                   <name>mapreduce.framework.name</name>
                   <value>yarn</value>
        </property>

  《mapreduce.framework.name  :  配置作业运算框架使用yarn 框架》

          8。 yarn -site. xml   (yarn 配置文件)

复制到桌面, 

创建以上第5 , 6 步需要的三个文件

$>       mkdir        /home/hduser/hadoop/temp

           mkdir      /home/hduser/hadoop/dfs/name

           mkdir      /home/hduser/hadoop/dfs/data

如没有 dfs 文件时 需要 递归创建一个:

                mkdir   -p   dfs/name

                mkdir  -p   dfs/data

查看 是否复制成功:   cat  文件名   

$>  e.g       cat  yarn-site.xml

将 node1 d的 hadoop 文件夹 复制到node2 与 node3  的 hduser 对应的文件夹下:

$>      scp      -r       /home/hduser/hadoop         hduser@node2:/home/hduser/

          scp      -r       /home/hduser/hadoop         hduser@node3:/home/hduser/

注释: 如果有错误, 就需要把dfs 文件下两个 name , data 里的内容清除掉。

 

2。3。 格式化与启动

              格式化     1.  只能格式化一次,  

命令: 利用hadoop 主目录下bin 目录下的hadoop 命令格式化

$ >  bin/hadoop

         ls 

          bin/hadoop    namenode    -format

在hadoop 的 bin 目录下时:   ./hadoop namenode -format

              格式化后:没有  error  就基本代表成功了

         2)     启动

 利用hadoop 主目录下sbin 目录

                     

  启动分布式文件系统 

       $>    sbin/start-dfs.sh

              在sbin 目录下     ./start-dfs.sh

                         启动运算框架

        $>   sbin/start-yarn.sh

                       在sbin 目录下     ./start-yarn.sh

 3) 测试: 浏览器打开:  http://node1:50070     web 访问分布式系统

           4)   关闭

                        关闭运算框架

     $>     sbin/stop-yarn.sh 

                  关闭分布式文件系统

     $>       sbin/stop-dfs.sh

           

3  hdfs  命令;

1. )  访问hdfs   根目录(/)         $>     bin/hadoop dfs   -ls /

/* 执行命令后可能会出现:

 *  19/01/06 16:32:48 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

*/,

2) 在 HDFS 新建目录   /test         $>     bin/hadoop   dfs   -mkdir  /test

3) 从 本地上传文件 a.txt 到 hdfs    /test/ 下

                     $>             bin/hadoop   dfs   -put  ***/a.txt    /test/

4)  将 hdfs  /test/下 a.txt 下载到本地桌面并命名为 b.txt

                    $>        bin/hadoop    dfs   -get   /test/a.txt     /home/hadoop/桌面/b.txt

   

5) 删除 hdfs 上  /test  目录

                    $ >    bin/hadoop      dfs        -rmr  /test

4. 安装 eclipse 

             ecplise 需要 Hadoop-eclipse-plugin.2.6** .jar  插件   复制到esclipse/plugins 下

先解压 : 

$》 命令:

    cd elipse

     ls

     ls  -l  plugins/hadoop-eclipse-plugin-2.6.4.jar

     ls

          ./ eclipse  -clean

在命令启动的eclispe 后, 配置Hadoop环境

    打开eclipse  改成project 视角,   preference ---mapreduce 右侧配置:

    Hadoop installation  direction:  /home/hduser/hadoop

   打开 mappreduce  选项卡

           eclipse -----show  view  --------others-------搜索并打开  mapreduce 

在新打开的 mappreduce 的选项卡中,  右键点击新增 MapReduce  location, 弹出配置界面

当初的配置界面做一下配置

name : xxxx

dfs: node1   9000

mapreduce  : node1      90001

        

保存

eclipse 工作空间左侧 project  explore 选项卡中, 点击dfs  locations  能看到刚配置的分布式文件xxxx. 

 点击xxxx 展开 分布式文件系统目录结构,

在环境变量加: export PATH = $JAVA _HOME/bin/java/

         $> cd hasoop

           pwd

 

 

  $>     hadoop  dfs  -ls /

           生效:

5 , 测试;  

          $>     hadoop  version

 

4.1  wordcount 单词计数作业

1.?)       node1 本地创建 2个记事本: 1. txt ,  2. txt

         1. txt :

this  is  a hadoop  text , hadoop  is  a   application

this  is  a  example .

           2. txt 

   java

   mysql

   hadoop

   mybatis

 2.)   将 node1 本地的 1.txt  , 2. txt  分别上传到  hdfs /input/ 下

$ >      hadoop dfs -mkdir  /input

        hadoop dfs  -put input/1.txt   /input/

      ls

      mv  1.txt

      mv  2.txt

 

3.)  在 hdfs  上 新建一个文件夹    、/output/  用于存放计算的结果集

          $> hadoop dfs -mkdir  /output

       

          ls     hadoop/share/

4.)    利用 hadoop  自带样例 jar 包,  执行单词计数器运算:

自带样例 : hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar

$>     hadoop  jar    hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar   wordcount   /input/*                      /output/wc1

 wordcount

   被运算的资源位置,。 结果输出位置

 结果: 

        this    2

        is       3

        hadoop  3

查看 wc1: 

$>      hadoop  fs  -ls  /output/

          hadoop fs -cat  /output/wc1/*

       

cd   examples

ls

创建  eclipse 快捷方式:

    liux 桌面 ,创建启动器, eclipse,

  

$>

 ls

cp   etc/hadoop/log4j.properties     /home/hduser/workspace/

cp   etc/hadoop/log4j.properties     /home/hduser/workspace/工程名/src

 

6. 安装apache-tomcat

 

 

这是 查看 jdk 及其路径--命令:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值