




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Hadoop 安装配置1.集群部署集群的部署情况涉及到系统的权限以及添加hadoop用户操作,因此用“root”身份进行比较合适。1.1环境说明集群中包括3个节点:1个Master,2个Salve,节点之间局域网连接,可以相互ping通。节点IP地址分布如下:机器名称IP地址Master.HadoopSlave1.HadoopSlave2.Hadoop3个节点上均是CentOS6.0系统,并且创建一个相同的用户hadoop。 以机器为例,创建hadoop用户的命令为:rootMaster hadoop# groupadd hadoop (创建hadoop用户组hadoop)rootMaster hadoop# useradd -g hadoop hadoop(创建hadoop用户,并将其加入hadoop组内)rootMaster hadoop# passwd hadoop (为hadoop用户创建密码)linux系统中,对用户的权限设计完善。root用户拥有最高权限,普通用户(如hadoop)权限较低。涉及系统的操作,用hadoop用户可能无法执行,这就需要在hadoop用户和root用户之间进行切换。从root用户切换到hadoop用户的命令为:su hadoop,不需要输入密码直接切换。从hadoop用户切换到root用户的命令为:su root,需要输入密码,验证后才能切换。普通用户要获取root的权限,也可以不su root,而是在命令前加上sudo字符,具体用法,可参考互联网。1.2 网络配置下面的例子我们将以Master机器为例,即主机名为Master.Hadoop,IP为进行一些主机名配置的相关操作。其他的Slave机器以此为依据进行修改。1)修改当前机器名称 假定我们发现我们的机器的主机名不是我们想要的,通过对/etc/sysconfig/network文件修改其中HOSTNAME后面的值,改成我们规划的名称。通过上面的命令我们从/etc/sysconfig/network中找到HOSTNAME进行修改,查看内容如下:其他机器也变为对应的机器名称Slave1.Hadoop和Slave2.Hadoop2)修改当前机器IP 假定我们的机器连IP在当时安装机器时都没有配置好,那此时我们需要对ifcfg-eth0文件进行配置,该文件位于/etc/sysconfig/network-scripts文件夹下。查看/etc/sysconfig/network-scripts/ifcfg-eth0内容,如果IP不与环境说明的不符合,就行修改。如果上图中IP与规划不相符,用下面命令进行修改:vim /etc/sysconfig/network-scripts/ifcgf-eth0修改完之后可以用ifconfig进行查看。3)配置hosts文件(必须) /etc/hosts这个文件是用来配置主机将用的DNS服务器信息,是记载LAN内接续的各主机的对应HostName和IP用的。当用户在进行网络连接时,首先查找该文件,寻找对应主机名(或域名)对应的IP地址。我们要测试两台机器之间知否连通,一般用ping 机器的IP,如果想用ping 机器的主机名发现找不见该名称的机器,解决的办法就是修改/etc/hosts这个文件,通过把LAN内的各主机的IP地址和HostName的一一对应写入这个文件的时候,就可以解决问题。例如:机器为Master.Hadoop:对机器为Salve1.Hadoop:用命令ping记性连接测试。测试结果如下:从上图中的值,直接对IP地址进行测试,能够ping通,但是对主机名进行测试,发现没有ping通,提示unknown host未知主机,这时查看Master.Hadoop的/etc/hosts文件内容。发现里面没有 Slave1.Hadoop内容,故而本机器是无法对机器的主机名为Slave1.Hadoop 解析。在进行Hadoop集群配置中,需要在/etc/hosts文件中添加集群中所有机器的IP与主机名,这样Master与所有的Slave机器之间不仅可以通过IP进行通信,而且还可以通过主机名进行通信。所以在所有的机器上的/etc/hosts文件末尾中都要添加如下内容: Master.Hadoop Slave1.Hadoop Slave2.Hadoop Slave3.Hadoop用以下命令进行添加:vim /etc/hosts添加结果如下:现在我们在进行对机器为Slave1.Hadoop的主机名进行ping通测试,看是否能测试成功。从上图中我们已经能用主机名进行ping通了,说明我们刚才添加的内容,在局域网内能进行DNS解析了,那么现在剩下的事儿就是在其余的Slave机器上进行相同的配置。然后进行测试。(备注:当设置SSH无密码验证后,可以scp进行复制,然后把原来的hosts文件执行覆盖即可。)用下面命令进行修改当前机器的主机名(备注:修改系统文件一般用root用户) 1.3所需软件1)JDK软件 jdk-8u5-linux-i586.rpm 可以去官网上下载2)Hadoop软件 hadoop-2.2.0.tar.gz 可以去官网上下载2、SSH无密码验证配置Hadoop运行过程中需要管理远端Hadoop守护进程,在Hadoop启动以后,NameNode是通过SSH(Secure Shell)来启动和停止各个DataNode上的各种守护进程的。这就必须在节点之间执行指令的时候是不需要输入密码的形式,故我们需要配置SSH运用 无密码公钥认证的形式,这样NameNode使用SSH无密码登录并启动DataName进程,同样原理,DataNode上也能使用SSH无密码登录到 NameNode。由于是对hadoop用户进行无密码验证,所以该过程主要部分用“hadoop”身份进行。图片中hadoopMaster 代表此时操作用户为hadoop,rootMaster 代表操作用户为root,可仔细参考图片。2.1 安装和启动SSH协议在Hadoop集群(第1期)安装CentOS6.0时,我们选择了一些基本安装包,所以我们需要两个服务:ssh和rsync已经安装了。可以通过下面命令查看结果显示如下:rpm qa | grep opensshrpm qa | grep rsync假设没有安装ssh和rsync,可以通过下面命令进行安装。yum install ssh 安装SSH协议yum install rsync (rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件)service sshd restart 启动服务确保所有的服务器都安装,上面命令执行完毕,各台机器之间可以通过密码验证相互登。2.2 配置Master无密码登录所有Salve1)SSH无密码原理 Master(NameNode | JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Salve(DataNode | Tasktracker)上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Slave上。当Master通过 SSH连接Salve时,Salve就会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用 私钥解密,并将解密数回传给Slave,Slave确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端Master复制到Slave上。2)Master机器上生成密码对 在Master节点上执行以下命令:ssh-keygen t rsa P 这条命是生成其无密码密钥对,询问其保存路径时直接回车采用默认路径。生成的密钥对:id_rsa和id_rsa.pub,默认存储在/home/hadoop/.ssh目录下。查看/home/hadoop/下是否有.ssh文件夹,且.ssh文件下是否有两个刚生产的无密码密钥对。接着在Master节点上做如下配置,把id_rsa.pub追加到授权的key里面去。cat /.ssh/id_rsa.pub /.ssh/authorized_keys在验证前,需要做两件事儿。第一件事儿是修改文件authorized_keys权限(权限的设置非常重要,因为不安全的设置安全设置,会让你不能使用RSA功能),另一件事儿是用root用户设置/etc/ssh/sshd_config的内容。使其无密码登录有效。(1)修改文件authorized_keys chmod 600 /.ssh/authorized_keys备注:如果不进行设置,在验证时,扔提示你输入密码,在这里花费了将近半天时间来查找原因。在网上查到了几篇不错的文章,把作为Hadoop集群_第5期副刊_JDK和SSH无密码配置来帮助额外学习之用。(2)设置SSH配置 用root用户登录服务器修改SSH配置文件/etc/ssh/sshd_config的下列内容。RSAAuthentication yes # 启用 RSA 认证PubkeyAuthentication yes # 启用公钥私钥配对认证方式AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)设置完之后记得重启SSH服务,才能使刚才设置有效。service sshd restart退出root登录,使用hadoop普通用户验证是否成功。ssh localhost从上图中得知无密码登录本级已经设置完毕,接下来的事儿是把公钥复制所有的Slave机器上。使用下面的命令格式进行复制公钥:scp /.ssh/id_rsa.pub 远程用户名远程服务器IP:/例如:scp /.ssh/id_rsa.pub hadoop:/上面的命令是复制文件id_rsa.pub到服务器IP为的用户为hadoop的/home/hadoop/下面。下面就针对IP为的Slave1.Hadoop的节点进行配置。(1)把Master.Hadoop上的公钥复制到Slave1.Hadoop上从上图中我们得知,已经把文件id_rsa.pub传过去了,因为并没有建立起无密码连接,所以在连接时,仍然要提示输入输入 Slave1.Hadoop服务器用户hadoop的密码。为了确保确实已经把文件传过去了,用SecureCRT登录 Slave1.Hadoop:服务器,查看/home/hadoop/下是否存在这个文件。从上面得知我们已经成功把公钥复制过去了。(2)在/home/hadoop/下创建.ssh文件夹 这一步并不是必须的,如果在Slave1.Hadoop的/home/hadoop已经存在就不需要创建了,因为我们之前并没有对Slave机器做过无密码登录配置,所以该文件是不存在的。用下面命令进行创建。(备注:用hadoop登录系统,如果不涉及系统文件修改,一般情况下都是用我们之前建立的普通用户hadoop进行执行命令。)mkdir /.ssh然后是修改文件夹.ssh的用户权限,把他的权限修改为700,用下面命令执行:chmod 700 /.ssh备注:如果不进行,即使你按照前面的 操作设置了authorized_keys权限,并配置了/etc/ssh/sshd_config,还重启了sshd服务,在Master能 用ssh localhost进行无密码登录,但是对Slave1.Hadoop进行登录仍然需要输入密码,就是因为.ssh文件夹的权限设置不对。这个文件 夹.ssh在配置SSH无密码登录时系统自动生成时,权限自动为700,如果是自己手动创建,它的组权限和其他权限都有,这样就会导致RSA无密 码远程登录失败。对比上面两张图,发现文件夹.ssh权限已经变了。(3)追加到授权文件authorized_keys 到目前为止Master.Hadoop的公钥也有了,文件夹.ssh也有了,且权限也修改了。这一步就是把Master.Hadoop的公钥追加到Slave1.Hadoop的授权文件authorized_keys中去。使用下面命令进行追加并修改authorized_keys文件权限:cat /id_rsa.pub /.ssh/authorized_keyschmod 600 /.ssh/authorized_keys(4)用root用户修改/etc/ssh/sshd_config具体步骤参考前面Master.Hadoop的设置SSH配置,具体分为两步:第1是修改配置文件;第2是重启SSH服务。(5)用Master.Hadoop使用SSH无密码登录Slave1.Hadoop 当前面的步骤设置完毕,就可以使用下面命令格式进行SSH无密码登录了。ssh 远程服务器IP从上图我们主要3个地方,第1个就是SSH无密码登录命令,第2、3个就是登录前后后面的机器名变了,由Master变为了Slave1,这就说明我们已经成功实现了SSH无密码登录了。最后记得把/home/hadoop/目录下的id_rsa.pub文件删除掉。rm r /id_rsa.pub到此为止,我们经过前5步已经实现了从Master.Hadoop到Slave1.HadoopSSH无密码登录,下面就是重复上面的步骤把剩余的两台(Slave2.Hadoop和Slave3.Hadoop)Slave服务器进行配置。这样,我们就完成了配置Master无密码登录所有的Slave服务器。2.3 配置所有Slave无密码登录Master和Master无密码登录所有Slave原理一样,就是把Slave的公钥追加到Master的.ssh文件夹下的authorized_keys中,记得是追加()。为了说明情况,我们现在就以Slave1.Hadoop无密码登录Master.Hadoop为例,进行一遍操作,也算是巩固一下前面所学知识,剩余的Slave2.Hadoop和Slave3.Hadoop就按照这个示例进行就可以了。首先创建Slave1.Hadoop自己的公钥和私钥,并把自己的公钥追加到authorized_keys文件中。用到的命令如下:ssh-keygen t rsa P cat /.ssh/id_rsa.pub /.ssh/authorized_keys接着是用命令scp复制Slave1.Hadoop的公钥id_rsa.pub到Master.Hadoop的/home/hadoop/目录下,并追加到Master.Hadoop的authorized_keys中。(1)在Slave1.Hadoop服务器的操作 用到的命令如下:scp /.ssh/id_rsa.pub hadoop:/(2)在Master.Hadoop服务器的操作用到的命令如下:cat /id_rsa.pub /.ssh/authorized_keys然后删除掉刚才复制过来的id_rsa.pub文件。最后是测试从Slave1.Hadoop到Master.Hadoop无密码登录。从上面结果中可以看到已经成功实现了,再试下从Master.Hadoop到Slave1.Hadoop无密码登录。至此Master.Hadoop与Slave1.Hadoop之间可以互相无密码登录了,剩下的就是按照上面的步骤把剩余 的Slave2.Hadoop和Slave3.Hadoop与Master.Hadoop之间建立起无密码登录。这样,Master能无密码 验证登录每个Slave,每个Slave也能无密码验证登录到Master。3、Java环境安装所有的机器上都要安装JDK,现在就先在Master服务器安装,然后其他服务器按照步骤重复进行即可。安装JDK以及配置环境变量,需要以root的身份进行。3.1 安装JDK首先用root身份登录Master.Hadoop后,在/usr目录下创建java文件夹,把下载的jdk-8u5-linux-i586.rpm放在/usr/java下。接着进入/usr/java目录下通过下面命令安装JDK。rootMaster # mkdir /usr/javarootMaster # cd /usr/javarootMaster # cp /home/hadoop/jdk-8u5-linux-i586.rpm /usr/javarootMaster java# rpm -ivh jdk-8u5-linux-i586.rpm按照上面步骤进行操作,然后查看/usr/java下面会发现多了一个名为jdk1.8.0_05文件夹,说明我们的JDK安装结束,删除jdk-8u5-linux-i586.rpm文件,进入下一个配置环境变量环节。3.2 配置环境变量编辑/etc/profile文件,在后面添加Java的JAVA_HOME、CLASSPATH以及PATH内1)编辑/etc/profile文件 rootMaster # vim /etc/profile2)添加Java环境变量 在/etc/profile文件的尾部添加以下内容:# set java environmentexport JAVA_HOME=/usr/java/jdk1.6.0_31export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/libexport PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin3)使配置生效 保存并退出,执行下面命令使其配置立即生效。rootMaster # source /etc/profile3.3 验证安装成功配置完毕并生效后,用下面命令判断是否成功。rootMaster # java -version命令输完后,显示如下三行语句:java version 1.7.0_45 OpenJDK Runtime Environment (rhel-.el6-i386 u45-b15) OpenJDK Server VM (build 24.45-b08, mixed mode) 我们可以确定JDK已经安装成功。3.4 安装剩余机器这时用普通用户hadoop通过下面命令格式把Master.Hadoop文件夹/home/hadoop/的JDK复制到其他Slave的/home/hadoop/下面,剩下的事儿就是在其余的Slave服务器上按照上图的步骤安装JDK。scp /home/hadoop/ jdk-8u5-linux-i586.rpm 远程用户名远程服务器IP:/或者scp / jdk-8u5-linux-i586.rpm 远程用户名远程服务器IP:/备注:代表当前用户的主目录,当前用户为hadoop,所以代表/home/hadoop。例如:把JDK从Master.Hadoop复制到Slave1.Hadoop的命令如下。scp / jdk-8u5-linux-i586.rpm hadoop:/然后查看Slave1.Hadoop的/home/hadoop查看是否已经复制成功了。复制成功后,我们就用最高权限用户root进行安装了。其他的与这个一样。4、Hadoop集群安装所有的机器上都要安装hadoop,现在就先在Master服务器安装,然后其他服务器按照步骤重复进行即可。安装和配置hadoop需要以root的身份进行。4.1 安装hadoop首先用root用户登录Master.Hadoop机器,把hadoop-2.2.0.tar.gz复制到/usr目录下面rootMaster cp /home/hadoop/hadoop-2.2.0.tar.gz /usr下一步进入/usr目录下,用下面命令把hadoop-2.2.0.tar.gz进行解压,并将其命名为hadoop,把该文件夹的读权限分配给普通用户hadoop,然后删除hadoop-2.2.0.tar.gz安装包。rootMaster cd /usr rootMaster usrtar zxvf hadoop-2.2.0.tar.gz #解压hadoop-2.2.0.tar.gz安装包rootMaster usrmv hadoop-2.2.0 hadoop #将hadoop-1.0.0文件夹重命名hadooprootMaster usrchown R hadoop:hadoop hadoop #将文件夹hadoop读权限分配给hadoop用户rootMaster usrrm rf hadoop-2.2.0.tar.gz #删除hadoop-2.2.0.tar.gz安装包最后在/usr/hadoop下面创建tmp文件夹,把Hadoop的安装路径添加到/etc/profile中,修改/etc/profile文件(配置java环境变量的文件),将以下语句添加到末尾,并使其有效:# set hadoop pathexport HADOOP_HOME=/usr/hadoopexport PATH=$PATH :$HADOOP_HOME/bin1)在/usr/hadoop创建三个文件夹,分别为tmp文件夹,“dfs/name”文件夹,以及“dfs/data”文件夹mkdir /usr/hadoop/tmp mkdir /usr/hadoop/dfsmkdir /usr/hadoop/dfs/namemkdir /usr/hadoop/dfs/data创建完后将其所属用户改为hadoopchown R hadoop:hadoop /usr/hadoop/tmpchown R hadoop:hadoop /usr/hadoop/dfs2)配置/etc/profile vim /etc/profile在该配置文件的末尾加入如下文字:#set hadoop path export HADOOP_HOME=/usr/hadoop export PATH=$PATH:$HADOOP_HOME/bin 3)重启/etc/profile source /etc/profile4.2 配置hadoop1)配置hadoop-env.sh 该hadoop-env.sh文件位于/usr/hadoop/etc/hadoop目录下。vim /usr/hadoop/etc/hadoop/hadoop-env.sh在文件的末尾添加下面内容。# set java environmentexport JAVA_HOME=/usr/java/jdk1.8.0_05 2)配置yarn-env.sh修改JAVA_HOME值export JAVA_HOME=/usr/java/jdk1.8.0_05 /3)配置slaves文件添加以下内容:(为数据节点服务器相应的IP地址) 并将原有的localhost行去掉。4)配置core-site.xml文件 修改Hadoop核心配置文件core-site.xml,这里配置的是HDFS的地址和端口号。文件修改后的内容如下: hadoop.tmp.dir /usr/hadoop/tmp A base for other temporary directories. fs.defaultFS hdfs:/:9000 备注:如没有配置hadoop.tmp.dir参数,此时系统默认的临时目录为:/tmp/hadoo-hadoop。而这个目录在每次重启后都会被干掉,必须重新执行format才行,否则会出错。5)配置hdfs-site.xml文件 文件修改后的内容如下: node.secondary.http-address :9001 .dir file:/usr/hadoop/dfs/name dfs.datanode.data.dir file:/usr/hadoop/dfs/data dfs.replication 1 dfs.webhdfs.enabled true 6)配置mapred-site.xml文件 将mapred-queues.xml.template复制成mapred-site.xml文件,修改Hadoop中MapReduce的配置文件,配置的是JobTracker的地址和端口。修改后的mapred-site.xml文件内容如下: yarn 7)配置yarn-site.xml文件修改后该文件的内容如下: yarn.nodemanager.aux-services mapreduce_shuffle yarn.nodemanager.aux-services.mapreduce.shuffle.class ort.apache.hadoop.mapred.ShuffleHandler yarn.resourcemanager.address :8032 yarn.resourcemanager.scheduler.address :8030 yarn.resourcemanager.resource-tracker.address :8031 yarn.resourcemanager.admin.address :8033 yarn.resourcemanager.webapp.address :8088 8)配置剩下的Slave机器上的Hadoop现在在Master机器上的Hadoop配置就结束了,剩下的就是配置Slave机器上的Hadoop。是 Master上配置好的hadoop所在文件夹/usr/hadoop复制到所有的Slave的/usr目录下(实际上Slave机器上的slavers文件是不必要的, 复制了也没问题)。用下面命令格式进行。(备注:此时用户可以为hadoop也可以为root)scp -r /usr/hadoop root服务器IP:/usr/上图中以root用户进行复制,当然不管是用户root还是hadoop,虽然Master机器上的/usr/hadoop文件夹用户hadoop有 权限,但是Slave1上的hadoop用户却没有/usr权限,所以没有创建文件夹的权限。所以无论是哪个用户进行拷贝,右面都是root机器 IP格式。因为我们只是建立起了hadoop用户的SSH无密码连接,所以用root进行scp时,扔提示让你输入Slave1.Hadoop 服务器用户root的密码。查看Slave1.Hadoop服务器的/usr目录下是否已经存在hadoop文件夹,确认已经复制成功。查看结果如下:从上图中知道,hadoop文件夹确实已经复制了,但是我们发现hadoop权限是root,所以我们现在要给Slave1.Hadoop服务器上的用户hadoop添加对/usr/hadoop读权限。以root用户登录Slave1.Hadoop,执行下面命令。chown -R hadoop:hadoop(用户名:用户组) hadoop(文件夹)接着在Slave1 .Hadoop上修改/etc/profile文件(配置 java 环境变量的文件),将以下语句添加到末尾,并使其有效(source /etc/profile):# set hadoop environmentexport HADOOP_HOME=/usr/hadoopexport PATH=$PATH :$HADOOP_HOME/bin如果不知道怎么设置,可以查看前面Master.Hadoop机器的/etc/profile文件的配置,到此为此在一台Slave机器上的Hadoop配置就结束了。剩下的事儿就是照葫芦画瓢把剩余的几台Slave机器按照从Master.Hadoop到Slave1.Hadoop复制Hadoop的安装包。这个例子进行部署Hadoop。4.3 启动及验证1)格式化HDFS文件系统 在Master.Hadoop上使用普通用户hadoop进行操作。(备注:只需一次,下次启动不再需要格式化,只需 start-all.sh)hadoop namenode -format(备注:格式化成功的话,INFO util.ExitUtil: Exiting with status 0 ,退出的状态值为0,如果退出的状态值为其他非0值则格式化失败。)2)启动hadoop 在启动前关闭集群中所有机器的防火墙,不然会出现datanode开后又自动关闭。(重点:如果防火墙没关,后续操作会失败)service iptables stop使用下面命令启动。启动hdfs: ./sbin/start-dfs.sh 启动yarn: ./sbin/start-yarn.sh3)验证hadoop启动成功(1)验证方法一:用jps命令在Master上用 java自带的小工具jps查看进程。(备注:上述jps命令产生结果为hadoop1.1.0上的,hadoop2.2.0上JobTracker进程被ResourceManager进程所取代了)在Slave1上用jps查看进程。(备注:上述jps命令产生结果为hadoop1.1.0上的,hadoop2.2.0上TaskTracker进程被NodeManager进程所取代了)(2)验证方式二:用hdfs dfsadmin -report用这个命令可以查看Hadoop集群的状态。Master服务器的状态:Slave服务器的状态(3)验证方式三:查看网页:50070 可以看到节点状况:8088/cluster 可以查看 ResourceManager5、Hadoop上运行自带的简单例子5.1 新建一个文件夹用于存放原始数据(随便指定):mkdir /usr/hadoop/tmp_data然后在此目录下,新建两个文件:file1、file2, 编辑file1的内容为: hello world, 编辑file2的内容为: hello hadoop,并保存。5.2 拷贝到HDFShdfs dfs -copyFromLocal /usr/hadoop/tmp_data/ /in/wordcount(或者:hdfs fs -put /user/hadoop/tmp_data/ /input)查看输入目录:hadoop fs -ls /5.3 RUN首先进入example目录:cd /usr/hadoop/share/hadoop/mapreduce然后run:hadoop jar hadoop-mapreduce-examples-2.2.0.jar wordcount /in/wordcount /out/wordcount5.4 查看程序运行结果:hadoop fs -cat /out/wordcount/part-r-00000hadoop 1 hello 2 world 16、Hadoop上编译运行带源码的wordcount程序6.1 新建一个WordCount.java文件,其内容为如下代码:mkdir /usr/hadoop/tmp/tmp_examples/WordCountcd /usr/hadoop/tmp/tmp_examples/WordCountvim WordCount.java然后编辑WordCount.java文件,其内容如下:import java.io.IOException;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.StringTokenizer;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.conf.Configured;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.LongWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapred.FileInputFormat;import org.apache.hadoop.mapred.FileOutputFormat;import org.apache.hadoop.mapred.JobClient;import org.apache.hadoop.mapred.JobConf;import org.apache.hadoop.mapred.MapReduceBase;import org.apache.hadoop.mapred.Mapper;import org.apache.hadoop.mapred.OutputCollector;import org.apache.hadoop.mapred.Reducer;import org.apache.hadoop.mapred.Reporter;import org.apache.hadoop.util.Tool;import org.apache.hadoop.util.ToolRunner;public class WordCount extends Configured implements Tool public static class MapClass extends MapReduceBase implementsMapper private final static IntWritable one = new IntWritable(1);private Text word = new Text();public void map(LongWritable key, Text value,OutputCollector output, Reporter reporter)throws IOException String line = value.toString();StringTokenizer itr = new StringTokenizer(line);while (itr.hasMoreTokens() word.set(itr.nextToken();output.collect(word, one);/* A reducer class that just emits the sum of the input values.*/public static class Reduce extends MapReduceBase implementsReducer public void reduce(Text key, Iterator
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年北交所招聘面试高频题库解析
- 2025届德阳市罗江区中考数学押题试卷含解析
- 2025年宠物训导师笔试重点复习题集
- 2025年妇联笔试高频题解析
- 投资合作协议细则
- 2025年高空作业登高架设考试试题及解析
- 2025年植保无人机面试高频问题集
- 2025年滑雪中级指导员考试要点与模拟题
- 2025年安全生产安全操作规程试题集
- 2025年品质检测员执业考试试题及答案解析
- 第六章 人体生命活动的调节 大单元教学设计 人教版(2024)生物八年级上册
- 中小学教师违反职业道德行为处理办法
- 追忆列宁PPT课件2
- 高中地理 必修一 地球上的大气 问题研究 何时“蓝天”常在 课件
- 2020阿里云产品图标
- 2023-2024-CSSCI经济管理类期刊排名
- GB/T 39856-2021热轧钛及钛合金无缝管材
- 《国际结算(第五版)》第十一章 国际非贸易结算
- 基础教育改革专题课件
- 安全监理巡视检查记录
- CRD法、CD法、三台阶法、台阶法工程施工程序示意图
评论
0/150
提交评论