Hadoop的配置及运行WordCount
2014-10-21 16:06
441 查看
1.1.1、以下为卸载再带的OpenJDK:
[master@localhost~]$ rpm -qa|grep jdk
java-1.7.0-openjdk-headless-1.7.0.60-2.4.7.4.fc20.i686
jdk-1.7.0_60-fcs.i586
java-1.7.0-openjdk-1.7.0.60-2.4.7.4.fc20.i686
[master@localhost~]$ yum -y remove java-1.7.0-openjdk-1.7.0.60-2.4.7.4.fc20.i686
然后到http://www.oracle.com/technetwork/java/javase/downloads/index.html下载jdk,可以下载rpm格式的安装包或解压版的。rpm版本的下载完毕后可以运行安装,一般会自动安装在/usr/java/的路径下面。接下来就配置jdk的环境变量了。
[master@localhost~]$ sudo vi /etc/profile
1.1.2、进入到系统的环境变量配置文件,加入以下内容:(按i进行编辑,编辑完毕按ESC,输入:wq,回车即保存退出)
#Java &Hadoop Environment
exportJAVA_HOME=/usr/java/jdk1.7.0_60
exportPATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
exportHADOOP_HOME=/home/master/hadoop-2.2.0
exportPATH=$HADOOP_HOME/bin
截图如下:Java环境变量配置
1.2.1、由于Fedora自带安装了ssh,不过默认没有开启。下面查看系统的ssh:
如上图已经安装了ssh,下面我们通过sudoservice
sshd start打开ssh服务,service sshd status未查看ssh的状态。
[master@localhost~]$ sudo service sshd start
Redirectingto /bin/systemctl start sshd.service
[master@localhost~]$ service sshd status
1.2.2、如上开启之后我们就要配置localhost:如果还没有密钥公钥对生成,则先用ssh-keygen指令生成一个密钥对。
[master@localhost~]$ cd .ssh
[master@localhost.ssh]$ ls
[master@localhost.ssh]$ ssh-keygen -t rsa
由于实验平台的搭建,需要简单配置即可,出现的不用输入什么,直接三个回车就行了,就可以生成不需要密码的密钥公钥对了,从而实现自动访问。
如下的生成内容:
1.2.3、利用cp id_rsa.pub
authorized_keys(把公钥复制一份,并改名为authorized_keys,这步执行完,应该sshlocalhost可以无密码登录本机了,可能第一次要密码),这样可以将authorized_keys发给其他主机,以便认证登陆了。
[master@localhost.ssh]$ ls
id_rsa id_rsa.pub
[master@localhost.ssh]$ cp id_rsa.pub authorized_keys
[master@localhost.ssh]$ ls
authorized_keys id_rsa id_rsa.pub
new:2.2.X
[master@localhost~]$ tar -xzf /home/master/下载/hadoop-2.2.0.tar.gz
[master@localhost~]$ cd hadoop-2.2.0/etc/hadoop
[master@localhosthadoop]$ vi hadoop-env.sh
*如果你想解压到其他地方,在tar最后写明路径,不然自动解压与当前用户路径当中。
由于安装的为hadoop_2.2.0则hadoop-env.sh文件位于/
hadoop-2.2.0/etc/hadoop路径之下,好像老版本的在/hadoop-1.2.1/conf/当中,如果找不到可以搜索hadoop-env.sh。
2.1.2、打开文件后在最后加入jdk路径:export
JAVA_HOME=/usr/java/jdk1.7.0_60
# The onlyrequired environment variable is JAVA_HOME. All others are
#optional. When running a distributedconfiguration it is best to
# setJAVA_HOME in this file, so that it is correctly defined on
# remotenodes.
# The javaimplementation to use.
exportJAVA_HOME=/usr/java/jdk1.7.0_60
以下为实现截图:
最后加上:exportHADOOP_HOME=/home/master/hadoop-2.2.0/
[master@localhosthadoop]$ sudo vi /etc/profile
//使编辑过的环境变量配置生效
[master@localhost~]$ source /etc/profile
*附加:如果为了安全起见,不让系统其他用户共享这个环境变量可以选择配置用户变量(配置bash环境变量)
在在PATH处加上:
# User specific environment and startupprograms
PATH=$PATH:$HOME/.local/bin:$HOME/bin:/home/hadoop-2.2.0/bin:/usr/java/jdk1.7.0_60/bin
//使配置文件不用重启直接生效生效
[master@localhost~]$ source ~/.bash_profile
环境变量配置完成,通过echo$PATH查看路径配置
输入hadoop查看Hadoop配置成功(需要重启)
*以下为配置成伪分布式主要还是因为完成实验,测试hadoop。
2.3.1、配置HDFS的地址及端口号(core-site.xml):
加入HDFS地址及端口:
如果不配置,则默认使用8020端口。修改core-site.xml(伪分布式使用IP地址而不是主机名或localhost的好处是不需要修改/etc/hosts,当然全分布式还是需要修改的)。
fs.default.name描述集群中NameNode结点的URI(包括协议、主机名称、端口号),集群里面的每一台机器都需要知道NameNode的地址。DataNode结点会先在NameNode上注册,这样它们的数据才可以被使用。独立的客户端程序通过这个URI跟DataNode交互,以取得文件的块列表。
hadoop.tmp.dir hadoop文件系统依赖的基础配置,很多路径都依赖它,如果hdfs-site.xml中不配置namenode和datanode的存放位置,默认就放在这个路径中。
[master@localhost~]$ cd hadoop-2.2.0/etc/hadoop
[master@localhosthadoop]$ vi core-site.xml
configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9010</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/master/hadoop-2.2.0/hdfs/hadooptmp</value>
</property>
</configuration>
2.3.2、修改HDFS文件的备份方式(hdfs-site.xml)
dfs.name.dir指定name镜像文件存放目录,如不指定则默认为core-site中配置的tmp目录。
dfs.data.dir数据存放的目录,如果不写默认为core-site中配置的tmp目录。
dfs.replication数据节点冗余备份的数量,它决定着系统里面的文件块的数据备份个数。对于一个实际的应用,它应该被设为3(这个数字并没有上限,但更多的备份可能并没有作用,而且会占用更多的空间)。少于三个的备份,可能会影响到数据的可靠性(系统故障时,也许会造成数据丢失),实验可以相对的小一点。
[master@localhosthadoop]$ vi hdfs-site.xml
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/home/master/hadoop-2.2.0/hdfs/name1,/home/master/hadoop-2.2.0/hdfs/name2</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/master/hadoop-2.2.0/hdfs/data1,/home/master/hadoop-2.2.0/hdfs/data2</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>
2.3.3、配置JobTracker的地址及端口(mapred-site.xml)
mapred.job.tracker -JobTracker的主机(或者IP)和端口。
[master@localhosthadoop]$ vi mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>
[master@localhost~]$ hadoop namenode -format
2.4.2、启动Hadoop
即运行start-all.sh,由于hadoop_2.2.0在/home/master/hadoop-2.2.0/sbin/路径中,老版本不在这里面,如果找不到可以搜索一下。不过新版本可以分别运行,start-dfs.sh或start-yarn.sh(另一种MapReduce新框架
Yarn),这里只用hdfs即可,可以直接start-dfs.sh。
然后通过jps查看jvm运行程序。jps(JavaVirtual
Machine Process Status Tool)是JDK 1.5提供的一个显示当前所有java进程pid的命令搜索。
[master@localhosthadoop]$ /home/master/hadoop-2.2.0/sbin/start-all.sh
或:
[master@localhosthadoop]$ /home/master/hadoop-2.2.0/sbin/start-dfs.sh
[master@localhosthadoop]$ jps
如上图,DataNode,NodeManager,ResourceManager,NameNode,Jps,SecondaryNameNode这几个都应该显示运行才行,如果少了或如果连接被拒绝,请查看Hadoop的hadoop-env.sh中的JAVA_HOME是否配置,如果配置正确,则查看ssh是否打开。
2.4.3、利用hdfs dfsadmin –report查看日志文件中有没有报错。如果没有报错,说明Hadoop已经启动成功了。
[master@localhosthadoop]$ hdfs dfsadmin -report
2.4.4、以下为通过Web页面查看节点的状态:
[master@localhosthadoop]$ /home/master/hadoop-2.2.0/sbin/stop-all.sh
或:
[master@localhosthadoop]$ /home/master/hadoop-2.2.0/sbin/stop-dfs.sh
3.1.1、WordCount.java路径如下:(也可以用搜索查找)
/hadoop-2.2.0-src/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/hadoop/examples/WordCount.java
接下来就是在Home下新建一个hadoop文件方便解压后进一步编译,不过这一步纯属自愿。
3.1.2、将WordCount.java拷贝到用户目录新建的hadoop文件中:
[master@localhost~]$ cp/home/master/hadoop-2.2.0-src/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/hadoop/examples/WordCount.java~/hadoop/
3.1.3、编译WordCount.java
由于编译这个文件需要几个hadoop的class文件。以下为编译的classpath:
*注classpath:(hadoop-2.2.0)
$HADOOP_HOME/share/hadoop/common/hadoop-common-2.2.0.jar:$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.2.0.jar:$HADOOP_HOME/share/hadoop/common/lib/commons-cli-1.2.jar
3.1.4、javac编译WordCount.java,在Home下新建一个class放置生成的class,也可以放在hadoop文件中。
[master@localhosthadoop]$ javac -classpath /home/master/hadoop-2.2.0/share/hadoop/common/hadoop-common-2.2.0.jar:/home/master/hadoop-2.2.0/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.2.0.jar:/home/master/hadoop-2.2.0/share/hadoop/common/lib/commons-cli-1.2.jarWordCount.java
-d ~ /class
3.1.5、将生成的class,打包成jar
[master@localhost~]$ jar cvf WordCount.jar -C class/ .
//或者进入class文件用如下命令
[master@localhostclass]$ jar cvf WordCount.jar *
3.2.1、创建本地示例文件
可以用gedit建file1.txt并将文本记录到里面,或是用命令行echo建文件及输入内容。首相创建一个file文件,保存示例文本文件。
[master@localhost~]$ mkdir ~/file
[master@localhost~]$ cd file
[master@localhostfile]$ echo "Hello Hadoop Goodbye Hadoop" > file2.txt
3.2.2、在HDFS上创建输入文件夹
先用hadoop fs –ls如果提示没有路径或文件,则我们需要先创建一个DFS的默认工作路径/user/{$USER}。一般初次都需要这个设置。(本机用户名{$USER}为master,以下需要一步步设置,我也不太清楚这是为什么~)
[master@localhost~]$ hadoop fs -mkdir /user
[master@localhost~]$ hadoop fs -mkdir /user/master
[master@localhost~]$ hadoop fs -mkdir /user/master/input
3.2.3、将本地file中的文件上传到DFS的input目录下
[master@localhosthadoop]$ hadoop fs -put ~/file/file*.txt input
[master@localhosthadoop]$ hadoop fs -ls input
*以上存在一些问题,如果hadoop fs –ls提示无路径或文件请加上/斜杠,最好直接表明/user/master/input这样的路径,不过初次之后都只需要hadoop
fs –ls input就可以显示input内的内容了,完全不知道这是为什么。所以出错就检查是不是/user/master/input这样的路径。如果建的错误了可以用以下命令删除路径:(可多尝试几次)
//删除目录与目录下所有文件
[master@localhosthadoop]$ hadoop fs -rm -r /input
3.3.1、执行WordCount
[master@localhost~]$ hadoop jar /home/master/hadoop/WordCount.jarorg.apache.hadoop.examples.WordCount input output
*其中:
hadoop jar为直线“jar”命令
/home/master/hadoop/WordCount.jar为WordCount.jar所在路径
org.apache.hadoop.examples.WordCount为WordCount.jar中WordCount.class的路径,类似java中调用函数那样import,指定类的位置,其间用点(.)隔开。
*以上没有提示错误则成功运行了WordCount示例。如果出现错误提示,其中出现Input
path does not exist这样的提示,那么有可能是DFS的路径配置有错误,请跳到[2.3将本地file中的文件上传到DFS的input目录下]内容重新配置DFS文件存储。
3.3.2、查看结果输出文件内容
//可以用-ls查看文件内容
[master@localhost~]$ hadoop fs -cat /user/master/output/part-r-00000
//或是:如果出错
[master@localhost~]$ hadoop fs –cat output/part-r-00000
一、环境:
计算机Fedora 20、jdk1.7.0_60、Hadoop-2.2.0二、步骤:
1 JDK及SSH安装配置:
1.1卸载Fedora自带的OpenJDK,安装Oracle的JDK
*由于Hadoop,无法使用OpenJDK,所以的下载安装Oracle的JDK。1.1.1、以下为卸载再带的OpenJDK:
[master@localhost~]$ rpm -qa|grep jdk
java-1.7.0-openjdk-headless-1.7.0.60-2.4.7.4.fc20.i686
jdk-1.7.0_60-fcs.i586
java-1.7.0-openjdk-1.7.0.60-2.4.7.4.fc20.i686
[master@localhost~]$ yum -y remove java-1.7.0-openjdk-1.7.0.60-2.4.7.4.fc20.i686
然后到http://www.oracle.com/technetwork/java/javase/downloads/index.html下载jdk,可以下载rpm格式的安装包或解压版的。rpm版本的下载完毕后可以运行安装,一般会自动安装在/usr/java/的路径下面。接下来就配置jdk的环境变量了。
[master@localhost~]$ sudo vi /etc/profile
1.1.2、进入到系统的环境变量配置文件,加入以下内容:(按i进行编辑,编辑完毕按ESC,输入:wq,回车即保存退出)
#Java &Hadoop Environment
exportJAVA_HOME=/usr/java/jdk1.7.0_60
exportPATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
exportHADOOP_HOME=/home/master/hadoop-2.2.0
exportPATH=$HADOOP_HOME/bin
截图如下:Java环境变量配置
1.2配置SSH
搭建hadoop分布式集群平台,为了实现通讯之间的可靠,防止远程管理过程中的信息泄露问题。配置ssh(安全外壳协议)是必不可少的步骤,以下为ssh的配置过程:1.2.1、由于Fedora自带安装了ssh,不过默认没有开启。下面查看系统的ssh:
如上图已经安装了ssh,下面我们通过sudoservice
sshd start打开ssh服务,service sshd status未查看ssh的状态。
[master@localhost~]$ sudo service sshd start
Redirectingto /bin/systemctl start sshd.service
[master@localhost~]$ service sshd status
1.2.2、如上开启之后我们就要配置localhost:如果还没有密钥公钥对生成,则先用ssh-keygen指令生成一个密钥对。
[master@localhost~]$ cd .ssh
[master@localhost.ssh]$ ls
[master@localhost.ssh]$ ssh-keygen -t rsa
由于实验平台的搭建,需要简单配置即可,出现的不用输入什么,直接三个回车就行了,就可以生成不需要密码的密钥公钥对了,从而实现自动访问。
如下的生成内容:
1.2.3、利用cp id_rsa.pub
authorized_keys(把公钥复制一份,并改名为authorized_keys,这步执行完,应该sshlocalhost可以无密码登录本机了,可能第一次要密码),这样可以将authorized_keys发给其他主机,以便认证登陆了。
[master@localhost.ssh]$ ls
id_rsa id_rsa.pub
[master@localhost.ssh]$ cp id_rsa.pub authorized_keys
[master@localhost.ssh]$ ls
authorized_keys id_rsa id_rsa.pub
2 Hadoop安装配置:
2.1下载并配置Hadoop的JDK环境
2.1.1、用Firefox键入http://www.apache.org/dyn/closer.cgi/hadoop/common/找了中意的源,下载相对稳定版本的hadoop。下载后路径一般为/home/master/下载/。接下来解压修改配置文件,加入jdk的路径。new:2.2.X
[master@localhost~]$ tar -xzf /home/master/下载/hadoop-2.2.0.tar.gz
[master@localhost~]$ cd hadoop-2.2.0/etc/hadoop
[master@localhosthadoop]$ vi hadoop-env.sh
*如果你想解压到其他地方,在tar最后写明路径,不然自动解压与当前用户路径当中。
由于安装的为hadoop_2.2.0则hadoop-env.sh文件位于/
hadoop-2.2.0/etc/hadoop路径之下,好像老版本的在/hadoop-1.2.1/conf/当中,如果找不到可以搜索hadoop-env.sh。
2.1.2、打开文件后在最后加入jdk路径:export
JAVA_HOME=/usr/java/jdk1.7.0_60
# The onlyrequired environment variable is JAVA_HOME. All others are
#optional. When running a distributedconfiguration it is best to
# setJAVA_HOME in this file, so that it is correctly defined on
# remotenodes.
# The javaimplementation to use.
exportJAVA_HOME=/usr/java/jdk1.7.0_60
以下为实现截图:
2.2为系统配置Hadoop环境变量
此为配置系统环境变量:最后加上:exportHADOOP_HOME=/home/master/hadoop-2.2.0/
[master@localhosthadoop]$ sudo vi /etc/profile
//使编辑过的环境变量配置生效
[master@localhost~]$ source /etc/profile
*附加:如果为了安全起见,不让系统其他用户共享这个环境变量可以选择配置用户变量(配置bash环境变量)
在在PATH处加上:
# User specific environment and startupprograms
PATH=$PATH:$HOME/.local/bin:$HOME/bin:/home/hadoop-2.2.0/bin:/usr/java/jdk1.7.0_60/bin
//使配置文件不用重启直接生效生效
[master@localhost~]$ source ~/.bash_profile
环境变量配置完成,通过echo$PATH查看路径配置
输入hadoop查看Hadoop配置成功(需要重启)
2.3修改Hadoop的配置文件
*以下配置文件主要设置为了完成实验吧,如果要更详细的,可以上网查阅相关hadoop配置文件说明。*以下为配置成伪分布式主要还是因为完成实验,测试hadoop。
2.3.1、配置HDFS的地址及端口号(core-site.xml):
加入HDFS地址及端口:
如果不配置,则默认使用8020端口。修改core-site.xml(伪分布式使用IP地址而不是主机名或localhost的好处是不需要修改/etc/hosts,当然全分布式还是需要修改的)。
fs.default.name描述集群中NameNode结点的URI(包括协议、主机名称、端口号),集群里面的每一台机器都需要知道NameNode的地址。DataNode结点会先在NameNode上注册,这样它们的数据才可以被使用。独立的客户端程序通过这个URI跟DataNode交互,以取得文件的块列表。
hadoop.tmp.dir hadoop文件系统依赖的基础配置,很多路径都依赖它,如果hdfs-site.xml中不配置namenode和datanode的存放位置,默认就放在这个路径中。
[master@localhost~]$ cd hadoop-2.2.0/etc/hadoop
[master@localhosthadoop]$ vi core-site.xml
configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9010</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/master/hadoop-2.2.0/hdfs/hadooptmp</value>
</property>
</configuration>
2.3.2、修改HDFS文件的备份方式(hdfs-site.xml)
dfs.name.dir指定name镜像文件存放目录,如不指定则默认为core-site中配置的tmp目录。
dfs.data.dir数据存放的目录,如果不写默认为core-site中配置的tmp目录。
dfs.replication数据节点冗余备份的数量,它决定着系统里面的文件块的数据备份个数。对于一个实际的应用,它应该被设为3(这个数字并没有上限,但更多的备份可能并没有作用,而且会占用更多的空间)。少于三个的备份,可能会影响到数据的可靠性(系统故障时,也许会造成数据丢失),实验可以相对的小一点。
[master@localhosthadoop]$ vi hdfs-site.xml
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/home/master/hadoop-2.2.0/hdfs/name1,/home/master/hadoop-2.2.0/hdfs/name2</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/master/hadoop-2.2.0/hdfs/data1,/home/master/hadoop-2.2.0/hdfs/data2</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>
2.3.3、配置JobTracker的地址及端口(mapred-site.xml)
mapred.job.tracker -JobTracker的主机(或者IP)和端口。
[master@localhosthadoop]$ vi mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>
2.4初始化HDFS文件系统,和启动Hadoop
2.4.1、初始化HDFS文件系统[master@localhost~]$ hadoop namenode -format
2.4.2、启动Hadoop
即运行start-all.sh,由于hadoop_2.2.0在/home/master/hadoop-2.2.0/sbin/路径中,老版本不在这里面,如果找不到可以搜索一下。不过新版本可以分别运行,start-dfs.sh或start-yarn.sh(另一种MapReduce新框架
Yarn),这里只用hdfs即可,可以直接start-dfs.sh。
然后通过jps查看jvm运行程序。jps(JavaVirtual
Machine Process Status Tool)是JDK 1.5提供的一个显示当前所有java进程pid的命令搜索。
[master@localhosthadoop]$ /home/master/hadoop-2.2.0/sbin/start-all.sh
或:
[master@localhosthadoop]$ /home/master/hadoop-2.2.0/sbin/start-dfs.sh
[master@localhosthadoop]$ jps
如上图,DataNode,NodeManager,ResourceManager,NameNode,Jps,SecondaryNameNode这几个都应该显示运行才行,如果少了或如果连接被拒绝,请查看Hadoop的hadoop-env.sh中的JAVA_HOME是否配置,如果配置正确,则查看ssh是否打开。
2.4.3、利用hdfs dfsadmin –report查看日志文件中有没有报错。如果没有报错,说明Hadoop已经启动成功了。
[master@localhosthadoop]$ hdfs dfsadmin -report
2.4.4、以下为通过Web页面查看节点的状态:
2.5关闭HDFS
stop-all都停止dfs和mapred,stop-dfs只停止dfs服务,看你开启的了。好像新版本建议这两个分开开启和关闭吧。[master@localhosthadoop]$ /home/master/hadoop-2.2.0/sbin/stop-all.sh
或:
[master@localhosthadoop]$ /home/master/hadoop-2.2.0/sbin/stop-dfs.sh
3运行WordCount:
3.1下载和编译WordCount示例
用Firefox键入http://www.apache.org/dyn/closer.cgi/hadoop/common/找了中意的源,然后在相关版本的目录下找到hadoop-2.2.0-src.tar.gz的源码压缩包下载,hadoop-2.2.0安装文件里面没有包含WordCount.java的示例,而是在hadoop-2.2.0-src里面。3.1.1、WordCount.java路径如下:(也可以用搜索查找)
/hadoop-2.2.0-src/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/hadoop/examples/WordCount.java
接下来就是在Home下新建一个hadoop文件方便解压后进一步编译,不过这一步纯属自愿。
3.1.2、将WordCount.java拷贝到用户目录新建的hadoop文件中:
[master@localhost~]$ cp/home/master/hadoop-2.2.0-src/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/hadoop/examples/WordCount.java~/hadoop/
3.1.3、编译WordCount.java
由于编译这个文件需要几个hadoop的class文件。以下为编译的classpath:
*注classpath:(hadoop-2.2.0)
$HADOOP_HOME/share/hadoop/common/hadoop-common-2.2.0.jar:$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.2.0.jar:$HADOOP_HOME/share/hadoop/common/lib/commons-cli-1.2.jar
3.1.4、javac编译WordCount.java,在Home下新建一个class放置生成的class,也可以放在hadoop文件中。
[master@localhosthadoop]$ javac -classpath /home/master/hadoop-2.2.0/share/hadoop/common/hadoop-common-2.2.0.jar:/home/master/hadoop-2.2.0/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.2.0.jar:/home/master/hadoop-2.2.0/share/hadoop/common/lib/commons-cli-1.2.jarWordCount.java
-d ~ /class
3.1.5、将生成的class,打包成jar
[master@localhost~]$ jar cvf WordCount.jar -C class/ .
//或者进入class文件用如下命令
[master@localhostclass]$ jar cvf WordCount.jar *
3.2建立文本文件并上传至DFS
*由于测试的是WordCount,只用新建普通文本文件即可,这里主要为完成实验。3.2.1、创建本地示例文件
可以用gedit建file1.txt并将文本记录到里面,或是用命令行echo建文件及输入内容。首相创建一个file文件,保存示例文本文件。
[master@localhost~]$ mkdir ~/file
[master@localhost~]$ cd file
[master@localhostfile]$ echo "Hello Hadoop Goodbye Hadoop" > file2.txt
3.2.2、在HDFS上创建输入文件夹
先用hadoop fs –ls如果提示没有路径或文件,则我们需要先创建一个DFS的默认工作路径/user/{$USER}。一般初次都需要这个设置。(本机用户名{$USER}为master,以下需要一步步设置,我也不太清楚这是为什么~)
[master@localhost~]$ hadoop fs -mkdir /user
[master@localhost~]$ hadoop fs -mkdir /user/master
[master@localhost~]$ hadoop fs -mkdir /user/master/input
3.2.3、将本地file中的文件上传到DFS的input目录下
[master@localhosthadoop]$ hadoop fs -put ~/file/file*.txt input
[master@localhosthadoop]$ hadoop fs -ls input
*以上存在一些问题,如果hadoop fs –ls提示无路径或文件请加上/斜杠,最好直接表明/user/master/input这样的路径,不过初次之后都只需要hadoop
fs –ls input就可以显示input内的内容了,完全不知道这是为什么。所以出错就检查是不是/user/master/input这样的路径。如果建的错误了可以用以下命令删除路径:(可多尝试几次)
//删除目录与目录下所有文件
[master@localhosthadoop]$ hadoop fs -rm -r /input
3.3 MapReduce执行过程显示信息
*备注:以input作为输入目录,output目录作为输出目录。3.3.1、执行WordCount
[master@localhost~]$ hadoop jar /home/master/hadoop/WordCount.jarorg.apache.hadoop.examples.WordCount input output
*其中:
hadoop jar为直线“jar”命令
/home/master/hadoop/WordCount.jar为WordCount.jar所在路径
org.apache.hadoop.examples.WordCount为WordCount.jar中WordCount.class的路径,类似java中调用函数那样import,指定类的位置,其间用点(.)隔开。
*以上没有提示错误则成功运行了WordCount示例。如果出现错误提示,其中出现Input
path does not exist这样的提示,那么有可能是DFS的路径配置有错误,请跳到[2.3将本地file中的文件上传到DFS的input目录下]内容重新配置DFS文件存储。
3.3.2、查看结果输出文件内容
//可以用-ls查看文件内容
[master@localhost~]$ hadoop fs -cat /user/master/output/part-r-00000
//或是:如果出错
[master@localhost~]$ hadoop fs –cat output/part-r-00000
结尾:
感谢!
相关文章推荐
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第一章 构建Spark集群-配置Hadoop伪分布模式并运行Wordcount示例(1)
- 配置Hadoop伪分布模式并运行Wordcount示例
- Ubuntu14.04安装配置Hadoop2.6.0(完全分布式)与 wordcount实例运行
- Ubuntu14安装配置Hadoop2.6.0(完全分布式)与 wordcount实例运行
- Windows 使用Eclipse配置连接hadoop,编译运行MapReduce --本地调试WordCount
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第一章 构建Spark集群-配置Hadoop单机模式并运行Wordcount(2)
- 配置 hadoop 开发环境+运行 wordcount 程序
- 配置Hadoop2.x的HDFS、MapReduce来运行WordCount程序
- Hadoop的安装与配置及示例程序wordcount的运行
- hadoop2.6.3学习第三节:win7+myeclipse2014配置开发环境,和运行WordCount
- Spark教程-构建Spark集群-配置Hadoop单机模式并运行Wordcount(2)
- Fedora 20下Eclipse Ingido中配置hadoop插件,并运行Wordcount例程
- ubuntu系统下eclipse配置hadoop开发环境并运行wordcount程序
- Ubuntu14.04安装配置Hadoop2.6.0(完全分布式)与 wordcount实例运行
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第一章 构建Spark集群-配置Hadoop单机模式并运行Wordcount(1)
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第一章 构建Spark集群-配置Hadoop伪分布模式并运行Wordcount(2)
- 配置Hadoop单机模式并运行Wordcount
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第一章 构建Spark集群-配置Hadoop伪分布模式并运行Wordcount示例(1)
- 三台机器的hadoop集群的配置、wordcount的运行
- spark学习1——配置hadoop 单机模式并运行WordCount实例(ubuntu14.04 & hadoop 2.6.0)