精华内容
下载资源
问答
  • hadoop项目
    千次阅读
    2019-09-30 01:52:32

     1. 完整的数据流图

     

    由同ip访问的次数:

    SQL查询

    select ip,count(ip) from tablename Group by ip;

    基于Hadoop分析

    使用Hadoop分析,需要两轮的Mapreduce处理

     

     

     

     

     

    Hive不支持对数据的更改和添加

     

    转载于:https://www.cnblogs.com/zhichun/p/11355777.html

    更多相关内容
  • 主要介绍了Eclipse+Maven构建Hadoop项目的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • Aspose for Hadoop项目使Apache Hadoop / MapReduce开发人员可以使用各种二进制文件格式。 开发人员可以创建二进制序列文件并将其转换为文本序列文件。
  • 本课程为项目实战课,项目各个环节既深入讲解理论知识,又结合项目业务进行实操,从而达到一站式掌握大数据离线项目
  • 大数据日志分析Hadoop项目实战

    千次阅读 多人点赞 2019-03-27 15:53:59
    教程目录0x00 教程内容0x01 大数据日志分析系统简介1. 需求2. 背景及架构0x02 UserAgentParser1.... 安装对应的jar包到本地Maven仓库0x03 项目实战1. 构建项目2. 引入依赖3. 编写测试代码4. 编写实战代码0x03 ...

    0x00 教程内容

    1. 大数据日志分析系统简介
    2. UserAgentParser的使用
    3. 实战准备
    4. 项目实战
    5. 结果展示

    0x01 大数据日志分析系统简介

    1. 需求

    a. 简单统计网站的访问日志中每个浏览器的访问次数

    2. 背景及架构

    a. 请参考文章:大数据日志分析系统背景及架构

    0x02 UserAgentParser

    1. UserAgentParser的介绍

    a. 可以用来解析http user-agent信息的小工具(别人写好的小项目)

    2. user-agent信息

    a. 信息样式
    Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36
    b. 查看user-agent(进入网站按F12进入检查界面,刷新一下)
    在这里插入图片描述

    0x03 实战准备

    1. 下载UserAgentParser小工具

    a. 下载地址(可以用git或者直接下载压缩包然后解压):
    https://github.com/LeeKemp/UserAgentParser

    2. 安装对应的jar包到本地Maven仓库

    a. 用Maven打包小工具成jar包(进入主目录,如:E:\workspace\UserAgentParser-master)
    mvn clean package -DskipTest
    在这里插入图片描述
    b. 安装jar包到本地Maven仓库
    mvn clean install -DskipTest
    在这里插入图片描述

    0x04 项目实战

    1. 构建项目

    a. 可参考此文章的0x01 新建maven工程
    Java API实现HDFS的相关操作

    2. 引入依赖

    a. 引入依赖(如果没有在安装此jar到本地仓库是无法引入的)

    <!-- 添加UserAgent的依赖 -->
    <dependency>
    	<groupId>com.kumkee</groupId>
    	<artifactId>UserAgentParser</artifactId>
    	<version>0.0.1</version>
    </dependency>
    

    b. 完整的依赖

    <?xml version="1.0" encoding="UTF-8"?>
    
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.shaonaiyi.hadoop</groupId>
        <artifactId>hadoop-learning</artifactId>
        <version>1.0</version>
    
        <name>hadoop-learning</name>
        <!-- FIXME change it to the project's website -->
        <url>http://www.example.com</url>
    
        <properties>
            <hadoop-version>2.7.5</hadoop-version>
        </properties>
    
        <dependencies>
    
            <!--添加hadoop依赖-->
            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-client</artifactId>
                <version>${hadoop-version}</version>
            </dependency>
    
            <!-- 添加UserAgent的依赖 -->
            <dependency>
                <groupId>com.kumkee</groupId>
                <artifactId>UserAgentParser</artifactId>
                <version>0.0.1</version>
            </dependency>
    
            <!--添加单元测试依赖-->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.11</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <configuration>
                        <archive>
                            <manifest>
                                <mainClass></mainClass>
                            </manifest>
                        </archive>
                        <descriptorRefs>
                            <descriptorRef>jar-with-dependencies</descriptorRef>
                        </descriptorRefs>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    
    </project>
    
    3. 编写测试代码

    a. 在java的测试目录创建一个测试包(com.shaonaiyi.hadoop.project):
    在这里插入图片描述
    b. 新建UserAgentTest测试类:

    package com.shaonaiyi.hadoop.project;
    
    import com.kumkee.userAgent.UserAgent;
    import com.kumkee.userAgent.UserAgentParser;
    
    /**
     * @Auther: 邵奈一
     * @Date: 2019/03/27 下午 2:45
     * @Description: UserAgent解析测试类
     */
    public class UserAgentTest {
    
        public static void main(String[] args) {
            String agentSource = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36";
            UserAgentParser userAgentParser = new UserAgentParser();
            UserAgent agent = userAgentParser.parse(agentSource);
    
            String browser = agent.getBrowser();
            String engine = agent.getEngine();
            String engineVersion = agent.getEngineVersion();
            String os = agent.getOs();
            String platform = agent.getPlatform();
            boolean isMobile = agent.isMobile();
            String version = agent.getVersion();
    
            System.out.println("浏览器:" + browser);
            System.out.println("引擎:" + engine);
            System.out.println("引擎版本:" + engineVersion);
            System.out.println("操作系统:" + os);
            System.out.println("平台:" + platform);
            System.out.println("是否为移动设备:" + isMobile);
            System.out.println("版本号:" + version);
    
        }
    
    }
    

    c. 执行测试代码,可看到结果:
    在这里插入图片描述

    4. 编写实战代码

    a. 新建包
    在这里插入图片描述
    b. 新建ParseUserAgentApp类:

    package com.shaonaiyi.hadoop.project;
    
    import com.kumkee.userAgent.UserAgent;
    import com.kumkee.userAgent.UserAgentParser;
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.fs.FileSystem;
    import org.apache.hadoop.fs.Path;
    import org.apache.hadoop.io.LongWritable;
    import org.apache.hadoop.io.Text;
    import org.apache.hadoop.mapreduce.Job;
    import org.apache.hadoop.mapreduce.Mapper;
    import org.apache.hadoop.mapreduce.Reducer;
    import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
    import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
    
    import java.io.IOException;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    /**
     * @Auther: 邵奈一
     * @Date: 2019/03/27 下午 2:54
     * @Description: 使用MapReduce完成浏览器的访问次数统计
     */
    public class ParseUserAgentApp {
    
        //Map类实现
        public static class MyMapper extends Mapper<LongWritable, Text, Text, LongWritable> {
    
            LongWritable one = new LongWritable(1);
            private UserAgentParser userAgentParser;
    
            @Override
            protected void setup(Context context) throws IOException, InterruptedException {
                userAgentParser = new UserAgentParser();
            }
    
            @Override
            protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
    
                //每条日志信息
                String lines = value.toString();
    
                String agentSource = lines.substring(getCharacterPosition(lines, "\"", 7) + 1);
                UserAgent agent = userAgentParser.parse(agentSource);
                String brower = agent.getBrowser();
    
                context.write(new Text(brower), one);
            }
    
            @Override
            protected void cleanup(Context context) throws IOException, InterruptedException {
                userAgentParser = null;
            }
        }
    
        //Reduce类实现
        public static class MyReducer extends Reducer<Text, LongWritable, Text, LongWritable> {
    
            @Override
            protected void reduce(Text key, Iterable<LongWritable> values, Context context) throws IOException, InterruptedException {
    
                int sum = 0;
                for (LongWritable value: values){
                    sum += value.get();
                }
                context.write(key, new LongWritable(sum));
    
            }
        }
    
        /**
         * 获取指定字符串中指定标识的字符串出现的索引位置
         * @param value 指定的字符串
         * @param operator 指定标识
         * @param index 索引位置
         * @return 返回的索引位置
         */
        private static int getCharacterPosition(String value, String operator, int index){
    
            Matcher slashMatcher = Pattern.compile(operator).matcher(value);
            int matcherIndex = 0;
            while (slashMatcher.find()) {
                matcherIndex++;
    
                if (matcherIndex == index) {
                    break;
                }
            }
            return slashMatcher.start();
        }
    
    
        public static void main(String[] args) throws Exception{
    
            Configuration configuration = new Configuration();
    
            // 若输出路径有内容,则先删除
            Path outputPath = new Path(args[1]);
            FileSystem fileSystem = FileSystem.get(configuration);
            if(fileSystem.exists(outputPath)){
                fileSystem.delete(outputPath, true);
                System.out.println("路径存在,但已被删除");
            }
    
            Job job = Job.getInstance(configuration, "ParseUserAgentApp");
    
            job.setJarByClass(ParseUserAgentApp.class);
    
            job.setMapperClass(MyMapper.class);
            job.setMapOutputKeyClass(Text.class);
            job.setMapOutputValueClass(LongWritable.class);
    
            job.setReducerClass(MyReducer.class);
            job.setOutputKeyClass(Text.class);
            job.setOutputValueClass(LongWritable.class);
    
            FileInputFormat.setInputPaths(job, new Path(args[0]));
            FileOutputFormat.setOutputPath(job, new Path(args[1]));
    
            System.exit(job.waitForCompletion(true) ? 0 : 1);
    
        }
    
    }
    

    ps:代码其实是此教程MapReduce入门例子之单词计数 改写来的,请查看学习!

    c. 打包(怎么打包都可以,此处教一种新的打包方式)
    mvn assembly:assembly
    在这里插入图片描述

    0x05 结果展示

    1. 上传项目到服务器

    a. 打包好项目后,可以在target目录看到有两个包:
    hadoop-learning-1.0.jar:没有引入外部依赖的jar包(在本地windows可以用而已)
    hadoop-learning-1.0-jar-with-dependencies.jar:引入了外部依赖的jar包(含小工具jar包)

    说明:因为我们的服务器没有我们刚开始时打包的UserAgentParser-0.0.1.jar包,我们只是在我们windows系统本地打了jar包,并安装到了我们windows系统的Maven仓库,实际上我们的服务器上没有的,所以要将hadoop-learning-1.0-jar-with-dependencies.jar此包拷贝到服务器使用,不然的话也要在服务器的Maven仓库安装好UserAgentParser-0.0.1.jar才行。
    b. 上传项目到服务器

    [hadoop-sny@master mr]$ pwd
    /home/hadoop-sny/mr
    [hadoop-sny@master mr]$ ll
    total 352752
    -rw-rw-r--. 1 hadoop-sny hadoop-sny 321100030 Dec 13 18:51 big_file_again.txt
    -rw-rw-r--. 1 hadoop-sny hadoop-sny      8837 Mar 22 19:34 hadoop-learning-1.0.jar
    -rw-rw-r--. 1 hadoop-sny hadoop-sny  39193853 Mar 27 15:34 hadoop-learning-1.0-jar-with-dependencies.jar
    -rw-rw-r--. 1 hadoop-sny hadoop-sny    903971 Dec 19 10:45 mapreduce-course-1.0-SNAPSHOT.jar
    -rw-rw-r--. 1 hadoop-sny hadoop-sny        30 Dec 19 17:12 small_file.txt
    
    2. 上传日志文件到HDFS

    a. 日志样式,如果没有文件,可以自己复制多几次写成文件来使用:

    183.162.52.7 - - [10/Nov/2016:00:01:02 +0800] "POST /api3/getadv HTTP/1.1" 200 813 "www.imooc.com" "-" cid=0&timestamp=1478707261865&uid=2871142&marking=androidbanner&secrect=a6e8e14701ffe9f6063934780d9e2e6d&token=f51e97d1cb1a9caac669ea8acc162b96 "mukewang/5.0.0 (Android 5.1.1; Xiaomi Redmi 3 Build/LMY47V),Network 2G/3G" "-" 10.100.134.244:80 200 0.027 0.027
    10.100.0.1 - - [10/Nov/2016:00:01:02 +0800] "HEAD / HTTP/1.1" 301 0 "117.121.101.40" "-" - "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.16.2.3 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2" "-" - - - 0.000
    117.35.88.11 - - [10/Nov/2016:00:01:02 +0800] "GET /article/ajaxcourserecommends?id=124 HTTP/1.1" 200 2345 "www.imooc.com" "http://www.imooc.com/code/1852" - "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36" "-" 10.100.136.65:80 200 0.616 0.616
    182.106.215.93 - - [10/Nov/2016:00:01:02 +0800] "POST /socket.io/1/ HTTP/1.1" 200 94 "chat.mukewang.com" "-" - "android-websockets-2.0" "-" 10.100.15.239:80 200 0.004 0.004
    10.100.0.1 - - [10/Nov/2016:00:01:02 +0800] "HEAD / HTTP/1.1" 301 0 "117.121.101.40" "-" - "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.16.2.3 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2" "-" - - - 0.000
    183.162.52.7 - - [10/Nov/2016:00:01:02 +0800] "POST /api3/userdynamic HTTP/1.1" 200 19501 "www.imooc.com" "-" cid=0&timestamp=1478707261847&uid=2871142&touid=2871142&page=1&secrect=a6e8e14701ffe9f6063934780d9e2e6d&token=3837a5bf27ea718fe18bda6c53fbbc14 "mukewang/5.0.0 (Android 5.1.1; Xiaomi Redmi 3 Build/LMY47V),Network 2G/3G" "-" 10.100.136.65:80 200 0.195 0.195
    10.100.0.1 - - [10/Nov/2016:00:01:02 +0800] "HEAD / HTTP/1.1" 301 0 "117.121.101.40" "-" - "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.16.2.3 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2" "-" - - - 0.000
    114.248.161.26 - - [10/Nov/2016:00:01:02 +0800] "POST /api3/getcourseintro HTTP/1.1" 200 2510 "www.imooc.com" "-" cid=283&secrect=86b720f312c2b25da3b20e59e7c89780&timestamp=1478707261951&token=4c144b3f4314178b9527d1e91ecc0fac&uid=3372975 "mukewang/5.0.2 (iPhone; iOS 8.4.1; Scale/2.00)" "-" 10.100.136.65:80 200 0.007 0.008
    120.52.94.105 - - [10/Nov/2016:00:01:02 +0800] "POST /api3/getmediainfo_ver2 HTTP/1.1" 200 633 "www.imooc.com" "-" cid=608&secrect=e25994750eb2bbc7ade1a36708b999a5&timestamp=1478707261945&token=9bbdba949aec02735e59e0868b538e19&uid=4203162 "mukewang/5.0.2 (iPhone; iOS 10.0.1; Scale/3.00)" "-" 10.100.136.65:80 200 0.049 0.049
    10.100.0.1 - - [10/Nov/2016:00:01:02 +0800] "HEAD / HTTP/1.1" 301 0 "117.121.101.40" "-" - "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.16.2.3 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2" "-" - - - 0.000
    112.10.136.45 - - [10/Nov/2016:00:01:02 +0800] "POST /socket.io/1/ HTTP/1.1" 200 94 "chat.mukewang.com" "-" - "android-websockets-2.0" "-" 10.100.15.239:80 200 0.006 0.006
    211.162.33.31 - - [10/Nov/2016:00:01:02 +0800] "GET /u/card HTTP/1.1" 200 331 "www.imooc.com" "http://www.imooc.com/code/2053" - "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36" "-" 10.100.136.65:80 200 0.371 0.371
    116.22.196.70 - - [10/Nov/2016:00:01:02 +0800] "POST /course/ajaxmediauser HTTP/1.1" 200 54 "www.imooc.com" "http://www.imooc.com/code/3500" mid=3500&time=60 "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.22 Safari/537.36 SE 2.X MetaSr 1.0" "-" 10.100.134.244:80 200 0.026 0.026
    10.100.0.1 - - [10/Nov/2016:00:01:02 +0800] "HEAD / HTTP/1.1" 301 0 "117.121.101.40" "-" - "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.16.2.3 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2" "-" - - - 0.000
    113.47.86.12 - - [10/Nov/2016:00:01:02 +0800] "GET /socket.io/1/websocket/eHBhkZC47oY64iLMMeXm HTTP/1.1" 101 125 "chat.mukewang.com" "-" - "-" "-" 10.100.15.239:80 101 277.433 277.433
    119.130.229.90 - - [10/Nov/2016:00:01:02 +0800] "POST /course/ajaxmediauser HTTP/1.1" 200 54 "www.imooc.com" "http://www.imooc.com/code/547" mid=547&time=60 "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36" "-" 10.100.136.65:80 200 0.021 0.021
    10.100.0.1 - - [10/Nov/2016:00:01:02 +0800] "HEAD / HTTP/1.1" 301 0 "117.121.101.40" "-" - "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.16.2.3 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2" "-" - - - 0.000
    120.52.94.105 - - [10/Nov/2016:00:01:02 +0800] "POST /api3/getrelevantcourse HTTP/1.1" 200 774 "www.imooc.com" "-" cid=608&secrect=e25994750eb2bbc7ade1a36708b999a5&timestamp=1478707262003&token=2b865e78535436df02fd3f986bb0cc08&uid=4203162 "mukewang/5.0.2 (iPhone; iOS 10.0.1; Scale/3.00)" "-" 10.100.136.65:80 200 0.048 0.048
    10.100.0.1 - - [10/Nov/2016:00:01:02 +0800] "HEAD / HTTP/1.1" 301 0 "117.121.101.40" "-" - "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.16.2.3 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2" "-" - - - 0.000
    183.44.115.163 - - [10/Nov/2016:00:01:02 +0800] "POST /api3/savemediafinish HTTP/1.1" 200 103 "www.imooc.com" "-" is_offline=0&time=0&mid=2312&secrect=cc8506ee27115cd3c9d617730ea600d9&cid=0&plat_id=5&timestamp=1478707261086&uid=4356276&stay_time=0&token=22e4a2ec2c40a7c4375651c5020e7023 "mukewang/5.0.1 (Android 5.0.2; Xiaomi Redmi Note 2 Build/LRX22G),Network WIFI" "-" 10.100.136.64:80 200 0.068 0.068
    211.162.33.31 - - [10/Nov/2016:00:01:02 +0800] "POST /course/ajaxusermediasstatus?cid=9 HTTP/1.1" 200 2954 "www.imooc.com" "http://www.imooc.com/code/2053" - "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36" "-" 10.100.136.64:80 200 0.030 0.030
    218.58.205.220 - - [10/Nov/2016:00:01:02 +0800] "HEAD /favicon.ico HTTP/1.1" 404 0 "chat.mukewang.com" "-" - "Go-http-client/1.1" "-" 10.100.15.239:80 404 0.009 0.009
    114.246.57.116 - - [10/Nov/2016:00:01:02 +0800] "POST /api3/userinfo HTTP/1.1" 200 151 "www.imooc.com" "-" secrect=9455e4679d68f107477a27d69cdf753c&timestamp=1478707262002&token=73bdcb218e48acd4869826afa320baf4&uid=4132795&uuid=0dd9c37bf4ac75031158349738b7612b "mukewang/5.0.2 (iPhone; iOS 10.1.1; Scale/2.00)" "-" 10.100.136.64:80 200 0.070 0.071
    218.58.205.245 - - [10/Nov/2016:00:01:02 +0800] "HEAD /favicon.ico HTTP/1.1" 404 0 "chat.mukewang.com" "-" - "Go-http-client/1.1" "-" 10.100.15.239:80 404 0.002 0.002
    10.100.0.1 - - [10/Nov/2016:00:01:02 +0800] "HEAD / HTTP/1.1" 301 0 "117.121.101.40" "-" - "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.16.2.3 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2" "-" - - - 0.000
    10.100.0.1 - - [10/Nov/2016:00:01:02 +0800] "HEAD / HTTP/1.1" 301 0 "117.121.101.40" "-" - "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.16.2.3 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2" "-" - - - 0.000
    112.253.38.168 - - [10/Nov/2016:00:01:02 +0800] "HEAD /favicon.ico HTTP/1.1" 404 0 "chat.mukewang.com" "-" - "Go-http-client/1.1" "-" 10.100.15.239:80 404 0.024 0.024
    218.58.205.204 - - [10/Nov/2016:00:01:02 +0800] "HEAD /favicon.ico HTTP/1.1" 404 0 "chat.mukewang.com" "-" - "Go-http-client/1.1" "-" 10.100.15.239:80 404 0.023 0.023
    112.253.38.159 - - [10/Nov/2016:00:01:02 +0800] "HEAD /favicon.ico HTTP/1.1" 404 0 "chat.mukewang.com" "-" - "Go-http-client/1.1" "-" 10.100.15.239:80 404 0.024 0.024
    218.58.205.252 - - [10/Nov/2016:00:01:02 +0800] "HEAD /favicon.ico HTTP/1.1" 404 0 "chat.mukewang.com" "-" - "Go-http-client/1.1" "-" 10.100.15.239:80 404 0.025 0.025
    119.184.176.131 - - [10/Nov/2016:00:01:02 +0800] "HEAD /favicon.ico HTTP/1.1" 404 0 "chat.mukewang.com" "-" - "Go-http-client/1.1" "-" 10.100.15.239:80 404 0.003 0.003
    223.104.31.75 - - [10/Nov/2016:00:01:02 +0800] "GET /socket.io/1/websocket/szGk1G7hrpIe6RWHMfLK HTTP/1.1" 101 91 "chat.mukewang.com" "-" - "-" "-" 10.100.15.239:80 101 30.068 30.068
    218.58.205.216 - - [10/Nov/2016:00:01:02 +0800] "HEAD /favicon.ico HTTP/1.1" 404 0 "chat.mukewang.com" "-" - "Go-http-client/1.1" "-" 10.100.15.239:80 404 0.022 0.022
    183.162.52.7 - - [10/Nov/2016:00:01:02 +0800] "POST /api3/beta HTTP/1.1" 200 16950 "www.imooc.com" "-" cid=0&timestamp=1478707261842&uid=2871142&secrect=a6e8e14701ffe9f6063934780d9e2e6d&token=4ea00393c5ac3588c5317cf9f28013fa "mukewang/5.0.0 (Android 5.1.1; Xiaomi Redmi 3 Build/LMY47V),Network 2G/3G" "-" 10.100.136.65:80 200 0.377 0.377
    10.100.0.1 - - [10/Nov/2016:00:01:02 +0800] "HEAD / HTTP/1.1" 301 0 "117.121.101.40" "-" - "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.16.2.3 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2" "-" - - - 0.000
    106.39.41.166 - - [10/Nov/2016:00:01:02 +0800] "POST /course/ajaxmediauser/ HTTP/1.1" 200 54 "www.imooc.com" "http://www.imooc.com/video/8701" mid=8701&time=120.0010000000002&learn_time=16.1 "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.22 Safari/537.36 SE 2.X MetaSr 1.0" "-" 10.100.136.64:80 200 0.016 0.016
    10.100.0.1 - - [10/Nov/2016:00:01:02 +0800] "HEAD / HTTP/1.1" 301 0 "117.121.101.40" "-" - "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.16.2.3 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2" "-" - - - 0.000
    183.162.52.7 - - [10/Nov/2016:00:01:02 +0800] "POST /api3/searchindex HTTP/1.1" 200 1484 "www.imooc.com" "-" cid=0&words=premiere&timestamp=1478707261876&uid=2871142&secrect=a6e8e14701ffe9f6063934780d9e2e6d&token=1b4fcde08cb054e9077b2f316a7da0b0 "mukewang/5.0.0 (Android 5.1.1; Xiaomi Redmi 3 Build/LMY47V),Network 2G/3G" "-" 10.100.136.65:80 200 0.110 0.110
    39.186.247.142 - - [10/Nov/2016:00:01:02 +0800] "GET /video/3237 HTTP/1.1" 200 7227 "www.imooc.com" "http://www.imooc.com/ceping/4191" - "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36" "-" 10.100.136.64:80 200 0.198 0.198
    113.140.11.123 - - [10/Nov/2016:00:01:02 +0800] "POST /course/ajaxmediauser/ HTTP/1.1" 200 54 "www.imooc.com" "http://www.imooc.com/video/5915/0" mid=5915&time=60.01200000000006&learn_time=284.9 "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393" "-" 10.100.134.244:80 200 0.029 0.029
    10.100.0.1 - - [10/Nov/2016:00:01:02 +0800] "HEAD / HTTP/1.1" 301 0 "117.121.101.40" "-" - "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.16.2.3 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2" "-" - - - 0.000
    

    b. 上传日志到HDFS根目录
    hadoop fs -put access.log /files

    3. 执行项目

    a. 请确保HDFS与YARN已启动,并确保HDFS根目录有access.log文件
    b. 进入jar包所在目录(此处为:/home/hadoop-sny/mr
    cd /home/hadoop-sny/mr
    c. 执行:
    hadoop jar ./hadoop-learning-1.0-jar-with-dependencies.jar com.shaonaiyi.hadoop.project.ParseUserAgentApp /files/access.log /projectout
    d. 查看统计结果
    hadoop fs -cat /projectout/*
    结果显示:

    [hadoop-sny@master mr]$ hadoop fs -cat /projectout/*
    Chrome	2775
    Firefox	327
    MSIE	78
    Safari	115
    Unknown	6705
    [hadoop-sny@master mr]$
    

    0xFF 总结

    1. 同样,也可以进入YARN的WebUI界面:http://master:8088,查看执行的作业
    2. 实战的代码其实是此教程:MapReduce入门例子之单词计数 的进阶版,请跳转学习,一步一步升级打怪!
    3. 思考题:请尝试挖掘更多的业务,实现更多的需求,此处只是统计了一个浏览器的次数,其实通过我们的测试类,可以发现我们的业务不只有统计日志中浏览器出现的次数。

    作者简介:邵奈一
    大学大数据讲师、大学市场洞察者、专栏编辑
    公众号、微博、CSDN邵奈一

    复制粘贴玩转大数据系列专栏已经更新完成,请跳转学习!

    展开全文
  • hadoop项目开发案例举例

    千次阅读 2019-01-27 13:18:37
    大数据Hadoop应用开发技术正可谓如火如荼推进中,以为大数据已经不仅仅是局限在互联网领域,而是已经被上升到了国家战略的高度层面。大数据正在深刻影响和改变我们的日常生活和工作方式。 Hadoop应用开发太过偏底层...

    大数据Hadoop应用开发技术正可谓如火如荼推进中,以为大数据已经不仅仅是局限在互联网领域,而是已经被上升到了国家战略的高度层面。大数据正在深刻影响和改变我们的日常生活和工作方式。

    Hadoop应用开发太过偏底层,难度之大真不是我们一般人所能够理解的。有的人会说,不都是倒腾代码吗?有什么难的!如果真是这样想,那就真的完蛋了。做hadoop底层的开发,真不是一般人和一般的企业就能够去做的。问个超级简单的问题,你知道的网络公司多,还是做大数据hadoop开发的公司多?估计没几个人知道做大数据hadoop开发的公司有哪些吧?

    Hadoop起源于国外,所以说国内的Hadoop应用开发起步是落后国外很多的。这也就导致了Hadoop开发中的很多游戏规则我们也只能遵从别人已经制定好的玩了。虽然说国内的Hadoop开发起步晚,但总算是有一些企业在做的。比如国产手机界扛把子的华为,还一直默默的在做底层开发的大快!

    当然,国内做Hadoop开发的不是只有这两家了。国内做Hadoop开发的公司以二次包装为主,做Hadoop原生态开发的至少我知道的也就是上面刚才说的大快搜索是在做的。感兴趣的可以搜索找一下国产发行版dkhadoop,应该还是可以申请拿一个玩一下的!

    Hadoop开发的应用案例比较多,简单的介绍几个Hadoop开发的应用方案案例:

    首先是在zhengwu方面的应用:zhengwu大数据平台解决方案——推行电子zhengwu、建设智慧城市等为抓手,以数据集中和共享为途径,推动技术融合、业务融合、数据融合,打通信息壁垒,形成覆盖全国、统筹利用、统一接入的数据共享大平台,构建全国信息资源共享体系,实现跨层级、跨地域、跨系统、跨部门、跨业务的协同管理和服务。

    fb0bd729bdafc095df8418c22d4df97ab436701e

    企业级大数据处理平台——这是针对大型企业或者行业,如果是一般的小企业就没有必要了。

    866ce34faf628494a6b280445ad1f29ca002ddd7

    城市智慧停车解决方案——智慧城市建设的重要组成部分,前些时候分享过一个大快的城市智慧停车云平台解决方案,感兴趣的可以看一下!

     9b5fd099507849c921a43d2af41281cf65522733

    上述这个三个Hadoop开发的应用案例可以说是目前比较典型的三种了。码字就码到这里吧,感兴趣的可以自己去查一下这方面的。

    展开全文
  • 资源名称:Hadoop大数据开发案例教程与项目实战 内容简介:本书是一本Hadoop学习入门参考书,全书共11章,分为基础篇和提高篇两部分。基础篇包括第1~6章,具体包括Hadoop概述、Hadoop基础环境配置、分布式存储HDFS...
  • idea在本地直接运行hadoop项目 首先需要在本地安装hadoop 只需要安装即可 无需搭建集群 首先需要下载hadoop 可以去官网下载 hadopp下载链接 找到你需要的对应版本的hadoop 本次以hadoop3.0.0为例 下载好后 解压到...

    idea在本地直接运行hadoop项目

    首先需要在本地安装hadoop 只需要安装即可 无需搭建集群
    首先需要下载hadoop
    可以去官网下载
    hadopp下载链接
    在这里插入图片描述
    找到你需要的对应版本的hadoop 本次以hadoop3.0.0为例
    在这里插入图片描述
    Hadoop3.0.0的百度云链接

    链接:https://pan.baidu.com/s/1goNuW8kwJRWCTe2OtG2lIQ
    提取码:vhsl

    下载好后 解压到你需要安装hadoop的目录下

    先检查好自己的jdk是否安装好,必须先配置好JAVA。使用命令提示符中输入

    java -version
    

    在这里插入图片描述
    显示版本号即为java安装好了 如果没有则需要先配置java环境
    详情可参照
    win10安装java教程

    安装好后,开始配置hadoop环境
    右键此电脑->属性->高级系统设置->环境变量
    在这里插入图片描述
    新加一个变量HADOOP_HOME 路径选择自己刚才解压出来的hadoop的目录下
    在变量path中新增一条
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    %HADOOP_HOME%_bin
    

    保存

    打开解压好的hadoop目录
    找到etc目录下的hadoop目录下的hadoop-env.cmd文件修改其中的jdk路径
    在这里插入图片描述
    把set JAVA_HOME改为jdk的位置
    注意路径中不能出现空格如果你的jdk安装目录在C:/Program Files/下
    使用PROGRA~1替换Program Files即 路径改为
    C:/PROGRA~1/java/jdk1.8.0_221

    在这里插入图片描述
    保存退出即可

    然后下载winutils-master 打开对应版本的hadoop 将其中的bin目录解压并替换掉自己的hadoop的bin目录即可。

    文件我保存到百度云 可以下载这个
    这个是2.6.0-3.0.0的hadoop的winutils-master

    链接:https://pan.baidu.com/s/1de_gNXRoBH-mWFngGcJzqA
    提取码:577t

    至此 打开命令提示符输入

    hadoop version
    

    即可看到自己的hadoop版本号 即安装成功
    重启IDEA即可直接在本地运行hadoop项目
    在这里插入图片描述
    如果需要安装hadoop集群 则还需修改4个xml文件即可 需要的话可自行百度。

    展开全文
  • Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统( Distributed File ...
  • Hadoop项目我为CS516数据密集型计算系统做的Hadoop项目合集
  • (1)“/opt/module/hadoop-3.2.2/share/hadoop/common/”目录下的hadoop-common-3.1.3.jar和haoop-nfs-3.1.3.jar; (2)“ /opt/module/hadoop-3.2.2/share/hadoop/common/lib”目录下的所有JAR包; (3)“/opt/...
  • 本人去年的时候一直对maven项目很头疼,由于在构建hadoop项目时涉及到很多版本冲突方面的问题,但是在今年的开发中将很多问题得以解决。这一次,将本人的经验得以总结,为大家讲解一下用maven构建hadoop项目的具体...
  • Hadoop项目练习

    千次阅读 2018-10-30 15:40:20
    1 hadoop hadoop 2769741 Oct 17 2017 10000_access.log -rw-r--r--. 1 hadoop hadoop 58 Oct 30 10:13 animal.txt drwxrwxr-x. 11 hadoop hadoop 236 Oct 29 10:49 apps drwxrwxr-x. 4 hadoop hadoop 30 Oct 25 21...
  • windows中使用eclipse搭建hadoop项目

    千次阅读 2019-03-11 15:52:22
    当eclipse集成了hadoop插件之后,搭建hadoop项目就简单多了 eclipse集成hadoop参考地址https://blog.csdn.net/lu1171901273/article/details/88395028 打开eclipse新建项目,选择Map/Reduce Project 输入名称 ...
  • Hadoop大数据开发基础教案-项目案例:电影网站用户性别预测教案.pdf
  • IDEA 开发hadoop项目配置及打包

    千次阅读 2018-05-30 15:37:12
    填写maven的坐标,“groupId”,“artifactId”,以及“version”,其中groupId是公司域名的反写,而artifactId是项目名或模块名,而version就是该项目或模块所对应的版本号,点击next: 4.可以使用本地的maven,...
  • Eclipse创建hadoop项目步骤

    千次阅读 2018-05-23 23:46:04
    右键单击创建folder,输入lib:在命令行下将核心包导入lib:导入hadoop-hdfs-2.8.2.jar导入hdfs下的库导入hadoop-common-2.8.2.jar导入common下的jar查看导入的jar包,修改文件所属者:单击hadoop项目,Refresh....
  • Hadoop项目结构

    千次阅读 2016-11-21 22:41:09
    Hadoop是一个由Apache基金会所开发的分布式系统基础架构。 用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。 Hadoop实现了一个分布式文件系统(Hadoop ...
  • hadoop订单项目实战

    2021-10-17 22:16:00
    1.到https://github.com/rathboma/hadoop-framework-examples#readme网址下载该项目文件 2.删除test文件夹 修改RawMapducer.java文件的路径地址 3.修改pom.xml文件 删除该文件的一下内容: <dependency> &...
  • eclipse下新建hadoop项目

    千次阅读 2016-07-26 13:02:34
    此次介绍有关在eclipse当中进行...新建Map/Reduce Project项目WordCountDemo 新建类WordCountDemo,包为org.hadoop.examples 将hadoop源码中的wordcount粘贴过来 设置arguments 运行,结果出现output文件已存在
  • PHP+Hadoop项目

    千次阅读 2022-04-21 16:35:00
    1.应用场景 学习使用PHP+Hadoop已经相关技术进行[分布式]开发. 2.学习/操作 1.PHP+Hadoop实现数据统计分析 https://blog.csdn.net/hao508506/article/details/63002073 后续补充 … 3.问题 TBD 4.参考 ...
  • Hadoop项目的成功公式

    2014-07-06 11:34:06
    Hadoop项目的成功公式,will be helpful for Hadoop project. this is from Hadoop Summit 2013.
  • Eclipse开发Hadoop相关项目本地配置插件,本地Eclipse相关配置插件和本地电脑部署Hadoop的相关插件
  • 首先保证已在Linux中正确开启Hadoop集群,然后要在windows的环境变量里新加一个变量HADOOP_USER_NAME,值为集群里开启Hadoop服务的账户,笔者在服务器中用root用户使用的start-dfs.sh,所以这里的值为root。...
  • Hadoop开发经验分享

    2015-07-07 19:51:11
    hadoop 开发工作的基础讲义,介绍了Hadoop基本开发技术
  • Hadoop学习之Eclipse构建Hadoop项目

    千次阅读 2014-05-07 16:34:10
    之前根据Hadoop官方文档对HDFS、MapReduce的架构、配置管理等进行了学习,但某些地方官方文档讲解的比较模糊。做过开发的人都能够体会,官方文档有些类似业务规则或者要求,而真正的细节还是需要深入研究源代码的。...
  • 错误: 找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster hadoop classpath
  • 背景:idea运行Hadoop项目报错:Failed to locate the winutils binary in the hadoop binary path。 通过网上查找方法解决发现程序需要根据HADOOP_HOME找到winutils.exe,由于win机器并没有配置该环境变量,所以程序...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 135,461
精华内容 54,184
关键字:

hadoop项目