在Linux OS中调用MapReduce对文件中单词出现次数进行统计
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、Ubuntu安装
一般来说,如果要做服务器,我们选择CentOS或者Ubuntu Server;如果做桌面系统,我们选择Ubuntu Desktop。但是在学习Hadoop方面,虽然两个系统没有多大区别,但是我们强烈推荐新手读者使用Ubuntu操作系统。下面我们也会分别给出在CentOS和Ubuntu系统下安装Hadoop的教程。
具体安装教程点这里
二、准备工作
1.创建hadoop用户
1.代码如下:
sudo useradd -m hadoop -s /bin/bash
2.设置密码,添加管理员权限。
$ sudo passwd hadoop
$ sudo adduser hadoop sudo
3.更新apt。
$ sudo apt-get update
4.安装配置文件VIM。
$ sudo apt-get install vim
5.安装SSH、配置SSH无密码登陆。
$ sudo apt-get install openssh-server
6.安装JAVA环境
下载文件jdk-8u162-linux-x64.tar.gz 使用Filezilla传输到“/home/linziyu/Downloads/”目录下。
(注:先创建/usr/lib/jvm目录用于存放JDK文件,然后进入上述jdk压缩包目录下并解压到创建的jvm目录下)
$ cd /usr/lib
$ sudo mkdir jvm #创建/usr/lib/jvm目录用来存放JDK文件
$ cd ~ #进入hadoop用户的主目录
$ cd Downloads
$ sudo tar -zxvf ./jdk-8u162-linux-x64.tar.gz -C /usr/lib/jvm #解压
JDK文件解压缩以后,可以执行如下命令到/usr/lib/jvm目录查看一下:
$ cd /usr/lib/jvm
$ ls
可以看到,在/usr/lib/jvm目录下有个jdk1.8.0_162目录。
7.设置环境变量
进入hadoop这个用户的环境变量配置文件,并在这个文件的开头位置,添加如下几行内容:
保存.bashrc文件并退出vim编辑器。(查看vim编辑器使用方法)
执行如下命令让.bashrc文件的配置立即生效:
$ source ~/.bashrc
这时,可以使用如下命令查看是否安装成功:
$ java -version
2.安装 Hadoop3.1.3
(这里本人安装的版本是2.10.0)
我们选择将 Hadoop 安装至 /usr/local/ 中:
$ sudo tar -zxf ~/下载/hadoop-2.6.0.tar.gz -C /usr/local # 解压到/usr/local中
$ cd /usr/local/
$ sudo mv ./hadoop-2.6.0/ ./hadoop # 将文件夹名改为hadoop
$ sudo chown -R hadoop ./hadoop # 修改文件权限
Hadoop 解压后即可使用。输入如下命令来检查 Hadoop 是否可用,成功则会显示 Hadoop 版本信息:
$ cd /usr/local/hadoop
$ ./bin/hadoop version
3.Hadoop伪分布式配置
Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个配置文件 core-site.xml 和 hdfs-site.xml 。Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。
修改配置文件 core-site.xml (通过 gedit 编辑会比较方便: gedit ./etc/hadoop/core-site.xml),将当中的
<configuration>
</configuration>
修改为下面配置:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
同样的,修改配置文件 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/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>
配置完成后,执行 NameNode 的格式化:
$ ncd /usr/local/hadoop
$ ./bin/hdfs namenode -format
成功的话,会看到 “successfully formatted” 和 “Exitting with status 0” 的提示,若为 “Exitting with status 1” 则是出错。
接着开启 NameNode 和 DataNode 守护进程。
$ cd /usr/local/hadoop
$ ./sbin/start-dfs.sh #start-dfs.sh是个完整的可执行文件,中间没有空格
若出现如下SSH提示,输入yes即可。
启动完成后,可以通过命令 jps 来判断是否成功启动,若成功启动则会列出如下进程: “NameNode”、”DataNode” 和 “SecondaryNameNode”(如果 SecondaryNameNode 没有启动,请运行 sbin/stop-dfs.sh 关闭进程,然后再次尝试启动尝试)。如果没有 NameNode 或 DataNode ,那就是配置不成功,请仔细检查之前步骤,或通过查看启动日志排查原因。
通过jps查看启动的Hadoop进程
成功启动后,可以访问 Web 界面 http://localhost:50070 查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件。
三、 调用MapReduce执行WordCount对单词进行计数
1.将待分析的文件上传到HDFS
2.在已安装好eclipse的前提下将上述文件放入如下路径:
3.运行WordCount.java
其运行结果如下:
总结
通过本次实验让我了解并学习了很多东西,从ubuntu,hadoop,jdk和eclipse的安装再到WordCount执行完成后的结果,每个步骤都让我重新温习了一些操作、命令和知识。在这次试验之后我对大数据这门课有了不一样的理解,对于LInux的命令使用更加熟悉。并且在这次实验的操作过程中也发现了很多自己的不足之处,在今后会多加练习提高自身水平。