Hadoop项目:手机号流量统计 - 进行中

项目概述

在这个项目中,我们的目标是使用Hadoop和MapReduce框架统计手机号的上行流量和、下行流量和以及总流量,并根据手机号的前缀将结果分区存储。具体需求如下:

  1. 统计每个手机号的上行流量和、下行流量和、总流量和(上行流量和 + 下行流量和)。

  2. 根据手机号的前缀进行区分,并输出到不同的输出文件中,例如:

    • 13* ==> ..

    • 15* ==> ..

    • other ==> ..

输入数据文件access.log的格式如下:

  • 第二个字段:手机号

  • 倒数第三个字段:上行流量

  • 倒数第二个字段:下行流量

环境搭建

在开始手机号流量统计项目之前,我们需要先搭建Hadoop开发环境。以下是详细的步骤:

1. 安装Hadoop

1.1 下载Hadoop

从Hadoop的官方网站下载最新的稳定版本。例如,可以下载hadoop-3.3.1.tar.gz

1.2 解压Hadoop

将下载的压缩包解压到指定目录:

tar -xzvf hadoop-3.3.1.tar.gz
mv hadoop-3.3.1 /usr/local/hadoop
1.3 配置环境变量

编辑~/.bashrc文件,添加以下内容:

export HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

然后执行source ~/.bashrc使配置生效:

source ~/.bashrc

2. 配置Hadoop

2.1 配置core-site.xml

编辑$HADOOP_HOME/etc/hadoop/core-site.xml文件,添加以下内容:

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>
2.2 配置hdfs-site.xml

编辑$HADOOP_HOME/etc/hadoop/hdfs-site.xml文件,添加以下内容:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:///usr/local/hadoop/hdfs/namenode</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:///usr/local/hadoop/hdfs/datanode</value>
    </property>
</configuration>
2.3 配置mapred-site.xml

编辑$HADOOP_HOME/etc/hadoop/mapred-site.xml文件(如果不存在,可以复制模板文件mapred-site.xml.template):

cp $HADOOP_HOME/etc/hadoop/mapred-site.xml.template $HADOOP_HOME/etc/hadoop/mapred-site.xml

然后添加以下内容:

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
2.4 配置yarn-site.xml

编辑$HADOOP_HOME/etc/hadoop/yarn-site.xml文件,添加以下内容:

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

3. 格式化HDFS

在首次配置Hadoop时,需要格式化HDFS:

hdfs namenode -format

4. 启动Hadoop

依次启动NameNode、DataNode、ResourceManager和NodeManager:

start-dfs.sh
start-yarn.sh

可以通过访问以下URL来检查Hadoop集群状态:

  • NameNode: http://localhost:9870

  • ResourceManager: http://localhost:8088

5. 验证Hadoop安装

运行Hadoop自带的示例程序来验证安装:

hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar pi 16 1000

6. 配置IDEA开发环境

6.1 安装IDEA

JetBrains官网下载并安装IntelliJ IDEA。

6.2 创建Maven项目

打开IDEA,新建一个Maven项目,并添加Hadoop依赖:

<dependencies>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-common</artifactId>
        <version>3.3.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-mapreduce-client-core</artifactId>
        <version>3.3.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-mapreduce-client-common</artifactId>
        <version>3.3.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-hdfs</artifactId>
        <version>3.3.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-yarn-api</artifactId>
        <version>3.3.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-yarn-client</artifactId>
        <version>3.3.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-yarn-common</artifactId>
        <version>3.3.1</version>
    </dependency>
</dependencies>
6.3 编写代码

在项目中创建适当的包结构和类,并按照之前的项目进展编写代码。

6.4 打包和运行

使用Maven进行打包:

mvn clean package

将生成的JAR文件上传到Hadoop集群并运行:

hadoop jar target/PhoneTraffic-1.0-SNAPSHOT.jar com.example.phonetraffic.AccessDriver /user/atguigu/input /user/atguigu/output

小结

至此,我们已经完成了Hadoop环境的搭建,并初步实现了手机号流量统计项目的一部分。通过这次环境搭建,我进一步了解了Hadoop的基本配置和使用方法,为接下来的开发和调试工作打下了基础。虽然项目还未完全完成,但相信在后续的工作中,我们会不断克服遇到的挑战,顺利完成所有任务。

项目概述

已完成部分

  • 数据准备与上传到HDFS。

  • 实现了AccessAccessMapperAccessReducerAccessPartitionerAccessDriver类。

  • 成功运行了MapReduce作业,输出结果已经生成在HDFS中。

待完成部分

  • 结果验证与下载:需要将HDFS中的输出结果下载到本地,并验证数据的准确性。

  • 优化与调优:考虑引入Combiner以优化数据处理性能,并对MapReduce作业进行参数调优。

  • 错误处理与日志分析:对作业日志进行分析,处理潜在的错误和异常情况。

小结

本次项目让我对Hadoop的基本使用方法和MapReduce编程模型有了更深入的理解。尽管目前项目还没有完全完成,但通过已有的进展,我积累了不少实战经验。在接下来的工作中,我将继续完成剩余的部分,并不断优化和改进整个数据处理流程。

通过这次项目,我认识到在大数据处理的实际应用中,扎实的理论基础和不断的实践相结合,是解决问题和提升技能的关键。希望在接下来的学习和实践中,能不断提高自己的能力,为未来的大数据处理工作打下坚实的基础。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值