Hadoop大数据平台入门——第一个小程序WordCount

首先我们需要安装Hadoop,并对Hadoop进行配置。这里我们就不赘述了,详情看这篇博客:Hadoop安装配置

值得注意的是,配置的时候,需要给Hadoop权限才能正确执行。最简单的办法就是讲hadoop以及其目录下所有文件都归在一个组中。

chown -R  hadoop:hadoop hadoop文件夹
就可以了。


配置完成之后,我们我们还需要什么?

1.需要在HDFS中保存有文件。

2.需要一个程序jar包,我们前面说过,JobTracker接收jar包就会分解job为mapTask和reduceTask。mapTask会读取HDFS中的文件来执行。


我们来看目标。

我们输入两个文件,file1和file2。交给hadoop执行之后,会返回file1和file2文件中的单词的计数。

我们说过,hadoop返回的是<key,value>的键值对的形式。

所以结果如下:也就是把单词以及单词的个数返回

school 1
hello  3
world 2
...


所以我们首先创建两个文件:

file1和file2。

随便填点东西在里面,文件中的内容是用来计数。单词之间用空格分隔,当然这是不一定的,如何区分单词是在后面jar包中的map程序中分辨的。

我们写好了这两个文件之后,要将文件提交到HDFS中。如何提交呢?

提交之前,首先要确保hadoop已经运行起来了,查看jps可以看到hadoop的进程。

首先我们在hadoop的HDFS中创建一个文件夹。

hdfs dfs -mkdir input_wordcount
这样就可以在HDFS根目录下创建一个input_wordcount的文件夹。

其实Hadoop的HDFS命令行非常接近Shell,只需要使用hdfs dfs -后面写上shell命令就可以对应执操作HDFS文件系统了。

### Hadoop概念 Hadoop是一个由Apache基金会开发的分布式计算平台,旨在处理大规模数据集。它通过提供高可靠性和容错能力的数据存储以及强大的并行处理框架来实现这一目标。Hadoop的核心组件包括: - **HDFS (Hadoop Distributed File System)**:用于存储海量结构化和非结构化的数据文件。其设计原则是在廉价硬件上运行,并能够容忍节点故障而不影响整个系统的正常运作。 - **YARN (Yet Another Resource Negotiator)**:负责资源管理和调度的任务协调器。这使得多个应用程序可以共享同一个集群上的计算资源。 - **MapReduce**:一种编程模型,允许开发者编写程序以并行方式处理大量数据。Map阶段会把输入分割成若干个小部分分别交给不同的机器去执行;Reduce阶段汇总这些中间结果得到最终输出[^1]。 ### 使用教程 #### 安装与配置 为了使Hadoop能够在本地环境中工作,首先需要按照官方文档完成软件包下载、解压及环境变量设置等工作。具体操作如下所示: 1. 下载适合版本的Hadoop发行版; 2. 解压缩至指定路径下; 3. 修改`$HADOOP_HOME/etc/hadoop/core-site.xml`, `hdfs-site.xml` 和其他必要的XML配置文件以便适应特定网络条件下的部署需求; 4. 添加Hadoop的相关路径到用户的shell profile中,例如`.bashrc` 或者 `.zshrc` 文件内,确保每次登录都能自动加载所需的环境变量[^3]。 ```bash export HADOOP_HOME=/opt/module/hadoop-3.3.4/ export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin ``` 5. 执行命令刷新当前终端session中的环境变量变更效果[^4]: ```bash source ~/.bashrc # or source ~/.zshrc depending on your shell ``` 6. 验证安装是否成功可以通过检查Hadoop版本号来进行确认: ```bash hadoop version ``` 如果一切顺利,则应该能看到有关所安装的具体版本的信息显示出来。 #### 启动集群服务 当完成了上述准备工作之后,就可以准备启动各个子系统的服务进程了。这里假设已经有一个完整的单机伪分布模式或者是多台物理服务器组成的真正意义上的分布式架构可供使用。 对于初次使用的场景来说,建议先尝试简单的单节点测试案例——即所谓的“伪分布式”。此时只需关注以下几个方面即可: - 对namenode进行初始化格式化操作,这是为了让NameNode知道哪些datanodes属于这个新的文件系统实例的一部分[^2]。 ```bash cd $HADOOP_HOME sbin/hadoop-daemon.sh --script hdfs start namenode ``` 注意这里的命令可能因不同版本而略有差异,请参照对应手册调整参数选项。 - 接下来依次开启其余必要守护线程,比如DataNodes, ResourceManager, NodeManagers等等。 ```bash sbin/start-dfs.sh # 启动HDFS相关服务 sbin/start-yarn.sh # 启动YARN相关服务 sbin/mr-jobhistory-daemon.sh start historyserver # 启动历史记录服务 ``` 一旦所有必需项都已就绪,便可通过浏览器访问默认监听端口8088处提供的Web UI界面监控集群状态变化情况。 #### 编写第一个MapReduce作业 有了稳定可靠的基础设施支撑后,下一步就是动手实践如何利用这套工具解决实际问题啦! 下面给出一段Python代码片段作为例子展示怎样创建一个简易单词计数任务(Word Count),这也是学习任何大数据技术时最经典的入门级练习之一。 ```python from mrjob.job import MRJob import re WORD_RE = re.compile(r"[\w']+") class WordCount(MRJob): def mapper(self, _, line): for word in WORD_RE.findall(line): yield (word.lower(), 1) def combiner(self, word, counts): yield (word, sum(counts)) def reducer(self, word, counts): yield (word, sum(counts)) if __name__ == '__main__': WordCount.run() ``` 此脚本定义了一个继承自`MRJob`类的新对象`WordCount`,其中包含了三个主要的方法用来描述map-reduce流程的不同环节。最后调用了静态方法run()触发整个过程。 要让这段逻辑跑起来还需要额外几步动作,像打包上传jar包之类的细节就不在此赘述了。总之,只要掌握了基本原理加上不断积累经验教训,相信任何人都能逐渐成长为一名合格的大数据分析工程师!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值