hadoop (一)环境搭建及示例运行

hadoop (一)环境搭建及示例运行

https://www.cnblogs.com/zjfstudio/p/3859704.html

hadoop 是什么?

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。

用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。

HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。

Hadoop的框架最核心的设计就是:HDFSMapReduceHDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算

liunx虚拟服务器搭建

参考我的另一篇帖子:liunx虚拟服务器搭建

https://www.jianshu.com/p/cec09938a0bc

hadoop服务器搭建

hadoop 源码下载

svn co http://svn.apache.org/repos/asf/hadoop/common/tags/release-0.20.2/
mv release-0.20.2 hadoop-0.20.2

修改版本号version为0.20.2



 





编译代码

    ant
    ant jar
    ant examples

出现 BUILD SUCCESSFUL 就OK 了。

配置SSH免密登录

参考https://www.jianshu.com/p/cec09938a0bc

配置核心配置文件(conf目录下)

core-site.xml


    
    
        fs.default.name
        
        hdfs://node3:9000 
        
    
    
    
    
    
        hadoop.tmp.dir
    
        /home/liuzd/hadoop-0.20.2/tmpPath
    
    
    
    
    
    
        mapred.jar
    
        E:\java\myHadoop\out\artifacts\myHadoop_jar\myHadoop.jar
    
    

hdfs-site.xml


    

        dfs.replication

        1

    

    
    

        dfs.permissions  

        false

    

mapred-site.xml

7/27/2018 4:34:22 PM 
    
    
        fs.default.name
        
        hdfs://node3:9000
    
    
    
    
        
        mapred.job.tracker
        
        hdfs://node3:9001
    
    

修改hadoop jdk环境配置

vi conf/hadoop-env.sh
修改内容:export JAVA_HOME=/home/liuzd/jdk1.7.0_79

打开JAVA_HOME注释,并配置为主机环境的jdk目录。

运行hadoop服务

进入hadoop主目录:

  1. 格式换namenode

    ./bin/hadoop namenode -format

  2. 启动所有服务

    bin/start-all.sh

    附:关闭所有服务

    bin/stop-all.sh

  3. 启动成功标志

    访问:http://192.168.56.104:50070 可以正常访问,并且namenode的livenode节点为1.
    该ip也就是我node3主机的ip。

    image
  1. 查看hadoop进程,jps 查看当前java进程,hadoop包含以下进程:

    3624 SecondaryNameNode
    3434 NameNode
    4325 Jps
    3686 JobTracker
    4707 DataNode
    4824 TaskTracker

系统启动正常后,跑个程序吧

构造hdfs分布式文件系统数据

$mkdir input

$cd input

$echo "hello world">test1.txt

$echo "hello hadoop">test2.txt

$cd ..

$bin/hadoop dfs -put input in

执行hadoop源码单词计数MapReduce

$bin/hadoop jar build/hadoop-0.20.2-examples.jar wordcount in out

输出:

18/07/27 16:26:55 INFO input.FileInputFormat: Total input paths to process : 2
18/07/27 16:26:56 INFO mapred.JobClient: Running job: job_201807271436_0007
18/07/27 16:26:57 INFO mapred.JobClient:  map 0% reduce 0%
18/07/27 16:27:04 INFO mapred.JobClient:  map 100% reduce 0%
18/07/27 16:27:16 INFO mapred.JobClient:  map 100% reduce 100%
18/07/27 16:27:18 INFO mapred.JobClient: Job complete: job_201807271436_0007
18/07/27 16:27:18 INFO mapred.JobClient: Counters: 17
18/07/27 16:27:18 INFO mapred.JobClient:   Job Counters 
18/07/27 16:27:18 INFO mapred.JobClient: Launched reduce tasks=1
18/07/27 16:27:18 INFO mapred.JobClient: Launched map tasks=2
18/07/27 16:27:18 INFO mapred.JobClient: Data-local map tasks=2
18/07/27 16:27:18 INFO mapred.JobClient:   FileSystemCounters
18/07/27 16:27:18 INFO mapred.JobClient: FILE_BYTES_READ=55
18/07/27 16:27:18 INFO mapred.JobClient: HDFS_BYTES_READ=25
18/07/27 16:27:18 INFO mapred.JobClient: FILE_BYTES_WRITTEN=180
18/07/27 16:27:18 INFO mapred.JobClient: HDFS_BYTES_WRITTEN=25
18/07/27 16:27:18 INFO mapred.JobClient:   Map-Reduce Framework
18/07/27 16:27:18 INFO mapred.JobClient: Reduce input groups=3
18/07/27 16:27:18 INFO mapred.JobClient: Combine output records=4
18/07/27 16:27:18 INFO mapred.JobClient: Map input records=2
18/07/27 16:27:18 INFO mapred.JobClient: Reduce shuffle bytes=61
18/07/27 16:27:18 INFO mapred.JobClient: Reduce output records=3
18/07/27 16:27:18 INFO mapred.JobClient: Spilled Records=8
18/07/27 16:27:18 INFO mapred.JobClient: Map output bytes=41
18/07/27 16:27:18 INFO mapred.JobClient: Combine input records=4
18/07/27 16:27:18 INFO mapred.JobClient: Map output records=4
18/07/27 16:27:18 INFO mapred.JobClient: Reduce input records=4

查看最终结果

$bin/hadoop dfs -cat out/*

输出:

hadoop  1
hello   2
world   1

完美ENDING

附录1 错误记录

put: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot create file/user/liuzd/test2.tar.gz. Name node is in safe mode.

https://www.cnblogs.com/xjh713/p/7509849.html

hadoop处于安全模式下,只允许读。

命令  hadoop dfsadmin -safemode get  查看安全模式状态

命令  hadoop dfsadmin -safemode enter进入安全模式状态

命令   hadoop dfsadmin -safemode leave   离开安全模式

安全模式是hadoop的一种保护机制,在启动时,最好是等待集群自动退出,然后进行文件操作。

一般进入safemode情况有:①启动或者重新启动hdfs时;②HDFS维护升级时

可以使用fsck 检查一下HDFS的健康度 

  fsck相关介绍:

    hadoop fsck
    Usage:DFSck  [-move | -delete | -openforwrite] [-files [-blocks [-locations | -racks]]]
     检查这个目录中的文件是否完整
    -move 破损的文件移至/lost+found目录
    -delete 删除破损的文件
    -openforwrite 打印正在打开写操作的文件
    -files 打印正在check的文件名
    -blocks 打印block报告(需要和-files参数一起使用)
    -locations 打印每个block的位置信息(需要和-files参数一起使用)
    -racks 打印位置信息的网络拓扑图(需要和-files参数一起使用)

    hadoop fsck /
      用这个命令可以检查整个文件系统的健康状况,但是要注意它不会主动恢复备份缺失的block,这个是由NameNode单独的线程异步处理的

你可能感兴趣的:(hadoop (一)环境搭建及示例运行)