• hadoop分布式搭建


    一、首先是搞好master

      1、创建用户组

        groupadd hadoop  添加一个组

        useradd hadoop -g hadoop  添加用户

      2、jdk的安装

        这里安装的版本是jdk-7u9-linux-i586.tar.gz ,使用 tar -zsvf jdk-7u9-linux-i586.tar.gz  -C /opt/  命令将其解压到/opt目录下,并将解压后的文件夹jdk-7u9-linux-i586改名为java.

        jdk安装好就要配置环境变量了,使用vi /etc/profile命令编辑添加如下内容:

        export JAVA_HOME=/opt/java/jdk
        exprot PATH=$JAVA_HOME/bin:$PATH

        配置好之后要用命令source /etc/profile使配置文件生效,这样jdk就安装完毕了。安装完之后不要忘了将所有者设置为hadoop。

    使用命令chown -R hadoop:hadoop java/

      3.hadoop的安装

        hadoop的版本是hadoop-0.20.2.tar.gz,也把它解压到/opt目录下面,改名为hadoop。

        hadoop也要设置环境变量,使用vi /etc/profile命令编辑添加如下内容:

        export HADOOP_HOME=/opt/hadoop

        export PATH=$HADOOP_HOME/bin:$PATH

        同样也要执行source /etc/profile使配置文件生效,然后执行命令使用命令chown -R hadoop:hadoop hadoop/将其所有者改为hadoop

      4、修改地址解析文件/etc/hosts,加入

        192.168.137.110 master

        192.168.137.111 slave1

        192.168.137.112 slave2

      5、修改hadoop的配置文件

      首先切换到hadoop用户,su hadoop

      ①修改hadoop目录下的conf/hadoop-env.sh文件

        加入java的安装路径export JAVA_HOME=/opt/java/jdk

      ②把hadoop目录下的conf/core-site.xml文件修改成如下:

    复制代码
    复制代码
     1 <property>
     2   <name>hadoop.tmp.dir</name>
     3   <value>/hadoop</value>
     4 </property>
     5 <property>
     6   <name>fs.default.name</name>
     7   <value>hdfs://master:9000</value>
     8 </property>
     9 <property> 
    10   <name>dfs.name.dir</name>           
    11   <value>/hadoop/name</value> 
    12 </property> 
    复制代码
    复制代码

      ③把hadoop目录下的conf/ hdfs-site.xml文件修改成如下:

    复制代码
    复制代码
    1 <property>
    2     <name>dfs.replication</name>  
    3     <value>3</value>
    4 </property>
    5 <property>
    6     <name>dfs.data.dir</name>  
    7     <value>/hadoop/data</value>
    8 </property>
    复制代码
    复制代码

      ④把hadoop目录下的conf/ mapred-site.xml文件修改成如下:

    复制代码
    复制代码
     1 <property>
     2     <name>mapred.job.tracker</name>  
     3     <value>master:9001</value>
     4 </property>
     5 <property>
     6     <name>mapred.system.dir</name>  
     7     <value>/hadoop/mapred_system</value>
     8 </property>
     9 <property>
    10     <name>mapred.local.dir</name>  
    11     <value>/hadoop/mapred_local</value>
    12 </property>
    复制代码
    复制代码

      ⑤把hadoop目录下的conf/ masters文件修改成如下:

        master

      ⑥把hadoop目录下的conf/ slaves文件修改成如下:

        master

        slave1

        slave2

      6、复制虚拟机

          我使用Virtual Box的克隆功能,将主机master完全克隆两份:slave1和slave2,并修改相应的主机名和IP地址,这样就可以简单地保持hadoop环境基本配置相同。

      7、SSH设置无密码验证

          切换到Hadoop用户,在Hadoop家目录下面创建.ssh目录,并在master节点上生成密钥对:ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa   。然后一直按[Enter]键,按默认的选项生成密钥对保存在.ssh/id_rsa文件中。

        然后执行如下命令:

    $ ssh ~/.ssh

    $ cp id_rsa.pub authorized_keys

    $ scp authorized_keys slave1:/home/hadoop/.ssh

    $ scp authorized_keys slave2:/home/hadoop/.ssh

        执行远程复制文件的时候记得要把slave1和slave2的防火墙关掉。复制完毕后记得要到slave1和slave2去修改该文件的权限。

    从master向slave1和slave2发起SSH连接,第一次登录时需要输入密码,以后就不需要了。

    $ ssh slave1

    $ ssh slave2

    我们只需要配置从master向slaves发起SSH连接不需要密码就可以了,但这样只能在master(即在主机master)启动或关闭hadoop服务。

      8、运行hadoop

        使用Hadoop用户,切换到hadoop/bin目录下

        格式化分布式文件系统./hadoop namenode -format

        执行命令./start-all.sh启动hadoop

        在master上执行jps命令查看运行的进程如下:

    复制代码
    复制代码
    [hadoop@master hadoop]$ jps
    3200 SecondaryNameNode
    3271 JobTracker
    3370 TaskTracker
    3002 NameNode
    3106 DataNode
    5687 Jps
    复制代码
    复制代码

        在slave1和slave2上执行jps结果如下:

    [hadoop@slave1 ~]$ jps
    1477 DataNode
    3337 Jps
    1547 TaskTracker

        访问http://master:50070可以查看分布式文件系统的状态

      9、运行单词统计程序

        WordCount是hadoop自带的实例,统计一批文本文件中各单词出现的资料,输出到指定的output目录中,输出目录如果已经存在会报错。

    $ cd /opt/hadoop
    $ hadoop fs -mkdir input
    $ hadoop fs -copyFromLocal /opt/hadoop/*.txt input/
    $ hadoop jar hadoop-0.20.2-examples.jar wordcount input output
    $ hadoop fs -cat output/*    #最后查看结果

    运行结果如下:

    复制代码
    复制代码
    13/06/16 19:32:26 INFO input.FileInputFormat: Total input paths to process : 4
    13/06/16 19:32:26 INFO mapred.JobClient: Running job: job_201306161739_0002
    13/06/16 19:32:27 INFO mapred.JobClient:  map 0% reduce 0%
    13/06/16 19:32:35 INFO mapred.JobClient:  map 50% reduce 0%
    13/06/16 19:32:36 INFO mapred.JobClient:  map 100% reduce 0%
    13/06/16 19:32:47 INFO mapred.JobClient:  map 100% reduce 100%
    13/06/16 19:32:49 INFO mapred.JobClient: Job complete: job_201306161739_0002
    13/06/16 19:32:49 INFO mapred.JobClient: Counters: 18
    13/06/16 19:32:49 INFO mapred.JobClient:   Job Counters 
    13/06/16 19:32:49 INFO mapred.JobClient:     Launched reduce tasks=1
    13/06/16 19:32:49 INFO mapred.JobClient:     Rack-local map tasks=2
    13/06/16 19:32:49 INFO mapred.JobClient:     Launched map tasks=4
    13/06/16 19:32:49 INFO mapred.JobClient:     Data-local map tasks=2
    13/06/16 19:32:49 INFO mapred.JobClient:   FileSystemCounters
    13/06/16 19:32:49 INFO mapred.JobClient:     FILE_BYTES_READ=179182
    13/06/16 19:32:49 INFO mapred.JobClient:     HDFS_BYTES_READ=363457
    13/06/16 19:32:49 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=358510
    13/06/16 19:32:49 INFO mapred.JobClient:     HDFS_BYTES_WRITTEN=133548
    13/06/16 19:32:49 INFO mapred.JobClient:   Map-Reduce Framework
    13/06/16 19:32:49 INFO mapred.JobClient:     Reduce input groups=10500
    13/06/16 19:32:49 INFO mapred.JobClient:     Combine output records=10840
    13/06/16 19:32:49 INFO mapred.JobClient:     Map input records=8968
    13/06/16 19:32:49 INFO mapred.JobClient:     Reduce shuffle bytes=179200
    13/06/16 19:32:49 INFO mapred.JobClient:     Reduce output records=10500
    13/06/16 19:32:49 INFO mapred.JobClient:     Spilled Records=21680
    13/06/16 19:32:49 INFO mapred.JobClient:     Map output bytes=524840
    13/06/16 19:32:49 INFO mapred.JobClient:     Combine input records=47258
    13/06/16 19:32:49 INFO mapred.JobClient:     Map output records=47258
    13/06/16 19:32:49 INFO mapred.JobClient:     Reduce input records=10840
    复制代码
    复制代码

      运行该程序一定得注意将slave1和slave2的防火墙给关闭,否则会报异常的。

  • 相关阅读:
    Java事务
    Mybatis二级缓存问题
    183.面试题 17.14. 最小K个数(快速排序)
    182. 跟着三叶学最短路径问题(存图方式)
    181. 差分数组学习
    AI大视觉(二十) | 小目标检测的tricks汇总
    CentOS7 上安装 mysql-5.7.26
    如何欺骗 Go Mod?
    .netcore docker常用命令-持续补充
    转载:登录后,用户配置被修改的处理方法
  • 原文地址:https://www.cnblogs.com/yhl-yh/p/7145233.html
Copyright © 2020-2023  润新知