2022年Linux下Hadoop伪分布式配置 .pdf
-
资源ID:32526620
资源大小:510.50KB
全文页数:10页
- 资源格式: PDF
下载积分:4.3金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
2022年Linux下Hadoop伪分布式配置 .pdf
Linux 下 Hadoop 的伪分布式配置1 Linux 下 Hadoop伪分布式配置詹坤林 2010 年 5 月目录介绍. 10 Hadoop 伪分布式模式说明 . 11 SSH无密码验证配置 . 22 JDK 安装和 Java 环境变量配置 . 22.1 安装 JDK 1.6 . 22.2 Java 环境变量配置 . 23 Hadoop 配置. 34 Hadoop 集群启动 . 55 Hadoop 使用. 65.1 一个测试例子 WordCount . 65.2 编写 Hadoop应用程序并在伪分布式模式下运行. 75.3 提交多个作业到集群 . 8附 程序. 8介绍这是本人在单机上的Cent-OS 系统中配置 Hadoop-0.19.1伪分布式时的总结文档,但该文档也适合其他版本的Linux系统和目前各版本的Hadoop(Hadoop-0.20之后的版本配置文件hadoop-site.xml 被拆分成了三个core-site.xml,hdfs-site.xml和 mapred-site.xml,这里会说明 0.20后的版本中如何配置这三个文件)。0 Hadoop 伪分布式模式说明Hadoop伪分布式模式是在单机上模拟Hadoop分布式,单机上的分布式并不是真正的伪分布式,而是使用线程模拟分布式。Hadoop 本身是无法区分伪分布式和分布式的, 两种配置也很相似, 唯一不同的地方是伪分布式是在单机器上配名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 10 页 - - - - - - - - - Linux 下 Hadoop 的伪分布式配置2 置,数据节点和名字节点均是一个机器1 SSH无密码验证配置Hadoop 需要使用SSH协议, namenode将使用 SSH协议启动namenode和datanode 进程,伪分布式模式数据节点和名字节点均是本身,必须配置SSH localhost无密码验证。机器上生成密码对,所有节点上执行以下命令: ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/ hadoop /.ssh/id_rsa): 默认路径Enter passphrase (empty for no passphrase): 回车,空密码Enter same passphrase again: Your identification has been saved in /home/ hadoop /.ssh/id_rsa. Your public key has been saved in /home/ hadoop /.ssh/id_rsa.pub. 这 将 在 /home/hadoop/.ssh/目 录 下 生 成 一个 私 钥id_rsa和 一个 公 钥id_rsa.pub 。在 namenode节点上做如下配置cp id_rsa.pub authorized_keys namenode的公钥这样配置过后, namenode可以无密码登录本身,可以通过命令“ssh localhost”来验证。2 JDK 安装和 Java 环境变量配置2.1 安装 JDK 1.6 root用 户 登 陆 , 新 建 文 件 夹 /usr/program, 下 载JDK 安 装 包jdk-6u13-linux-i586.bin, 复制到目录/usr/program 下,在命令行进入该目录,执行命令“ ./ jdk-6u13-linux-i586.bin” ,命令运行完毕,将在目录下生成文件夹 jdk1.6.0_13 ,安装完毕。2.2 Java 环境变量配置root 用户登陆,命令行中执行命令”vi /etc/profile”, 并加入以下内容,配置环境变量 ( 注意/etc/profile这个文件很重要,后面Hadoop的配置还会用到)。# set java environment export JAVA_HOME=/usr/program/jdk1.6.0_13/ export JRE_HOME=/usr/program/jdk1.6.0_13/jre export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 10 页 - - - - - - - - - Linux 下 Hadoop 的伪分布式配置3 保存并退出,执行以下命令使配置生效chmod +x /etc/profile source /etc/profile 配置完毕,在命令行中使用命令”java -version”可以判断是否成功。在hadoop用户下测试 java version ,一样成功。3 Hadoop 配置Hadoop用户登录。下载 hadoop-0.19.1 ,将其解压到 /usr/local/hadoop目录下,解压后目录形式是 /usr/local/hadoop/hadoop-0.19.1。使用如下命令 : tar zxvf hadoop-0.19.1.tar.gz (1) 配置 Hadoop的配置文件(a) 配置 hadoop-env.sh $ vi nutch-1.0/conf/hadoop-env.sh # set java environment export JAVA_HOME= /usr/program/jdk1.6.0_13/(b) 配置 conf/hadoop-site.xml Hadoop配置参数的含义请参考conf/Hadoop-default.xml。Hadoop-0.20之 后 的 版 本 请 分 别 配 置core-site.xml, hdfs-site.xml 和mapred-site.xml三个配置文件, 配置方法即将下面hadoop-site.xml文件中的三块参数分别复制到三个文件当中。 fs.default.name hdfs:/localhost:9000 HDFS的 URI,文件系统 :/namenode标识 : 端口号 hadoop.tmp.dir /usr/local/hadoop/hadooptmp namenode上本地的hadoop 临时文件夹 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 10 页 - - - - - - - - - Linux 下 Hadoop 的伪分布式配置4 dfs.name.dir /usr/local/hadoop/hdfs/name namenode上存储 hdfs 名字空间元数据 dfs.data.dir /usr/local/hadoop/hdfs/data datanode上数据块的物理存储位置 dfs.replication 1 副本个数,不配置默认是3, 应小于 datanode 机器数量 mapred.job.tracker localhost:9001 jobtracker标识 : 端口号,不是URI mapred.local.dir /usr/local/hadoop/mapred/local tasktracker上执行 mapreduce 程序时的本地目录 mapred.system.dir /tmp/hadoop/mapred/system 这个是 hdfs 中的目录,存储执行mr 程序时的共享文件 (c) 配置 masters 文件, 加入 namenode的主机名localhost (d) 配置 slaves 文件, 加入所有 datanode 的主机名localhost 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 10 页 - - - - - - - - - Linux 下 Hadoop 的伪分布式配置5 4 Hadoop 集群启动格式化 namenode ,格式化后生成了hdfs/name 文件夹bin/hadoop namenode format 启动 hadoop 所有进程,bin/start-all.sh(或者先后执行start-dfs.sh和 start-mapreduce.sh) 。可以通 过以下 启动日 志看 出,首 先启动namenode, 然 后启动datanode,然 后启动secondarynamenode 。再启动jobtracker,然后启动tasktracker。启动 hadoop 成功后,生成了hadooptmp 文件夹, hdfs/data文件夹和 mapred 文件夹。用 java自带的小工具jps 查看进程 , 可以看到所有进程均在本机器上运行。查看集群状态bin/hadoop dfsadmin report Hadoop 的 web 方式查看: http:/localhost:50070 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 10 页 - - - - - - - - - Linux 下 Hadoop 的伪分布式配置6 Hadoop查看工作情况 : http:/localhost:50030 5 Hadoop 使用5.1 一个测试例子 WordCount 计算输入文本中词语数量的程序WordCount在 Hadoop主目录下的 java 程序包 hadoop-0.19.1-examples.jar中,执行步骤如下:(1) 上传数据到 HDFS 中bin/hadoop fs -mkdir mytest bin/hadoop fs -copyFromLocal /home/hadoop/mytest/input1 bin/hadoop fs -copyFromLocal /home/hadoop/mytest/input2 (2) 执行命令,提交作业bin/hadoop jar hadoop-0.19.1-examples.jar wordcount mytest/* output 命令执行完毕,在页面 http:/localhost:50030/中能够看到作业执行情况。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 10 页 - - - - - - - - - Linux 下 Hadoop 的伪分布式配置7 (3) 程序输出程序将统计mytest 目录下的所有文本文件中词语的数量,并将结果输出到hdfs 的 output 目录下的 part-00000文件中。这里的 output 目录是程序生成的目录,程序运行前不可存在。执行以下命令可以查看结果。bin/hadoop fs -cat output/part-00000 5.2 编写 Hadoop应用程序并在伪分布式模式下运行将 hadoop 整个包导入 eclipse中,并将 hadoop-site.xml文件配置为以下内容。 (或者直接将上面的hadoop目录导入 eclipse中) 。编写应用程序并直接在eclipse中编译运行, 此时程序将在伪分布式模式下运行,使用的是 HDFS 。附录中给出了一个程序实例。配置文件 hadoop-site.xml如下: fs.default.name hdfs:/localhost:9000 mapred.job.tracker localhost:9001 j 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 10 页 - - - - - - - - - Linux 下 Hadoop 的伪分布式配置8 5.3 提交多个作业到集群提交一个后, 可以继续提交, 这样集群中将有多个作业, Hadoop有一个作业队列,可以在以下网址中查看。http:/localhost:50030/jobqueue_details.jsp?queueName=default涉及多个作业时, Hadoop将对作业进行调度, 默认调度方式是基于优先级的FIFO方式。更改作业优先级命令作业优先级有五种: VERY_HIGH HIGH NORMAL LOW VERY_LOW 例如:bin/hadoop job -set-priority job_201005210042_0074 VERY_HIGH 附 程序Apache所有开源项目下载地址是:http:/archive.apache.org/dist/import java.io.IOException; import org.apache.hadoop.conf.Configuration; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 10 页 - - - - - - - - - Linux 下 Hadoop 的伪分布式配置9 import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IOUtils; public class DFSOperator /* * Write to HDFS */ public static void main(String args) Configuration conf=new Configuration();/it will read conf/*.xml,such as hadoop-site.xml try System.out.println(write to hdfs); FileSystem fs=FileSystem.get(conf); /Path f=new Path(hdfs:/javawrhdfsfile);/hdfs root directory,it must be three / or one / /Path f=new Path(hdfs:/user/nutch/javawrhdfsfile);/ hdfs:/ or hdfs:/ is the root directory of hdfs,like / in linux /Path f=new Path(hdfs:/javawrhdfsfile); /absolute path,f.isAbsolute() is true /Path f=new Path(/javawrhdfsfile); /it will have error /Path f=new Path(/javawrhdfsfile); Path f=new Path(/javawrhdfsfile); /Path f=new Path(hdfs:/10.10.97.142:9000/javawrhdfsfile); /绝对 URI 前缀请与 dfs.defaule.name一致,使用ip 时因为 /etc/hosts改了,会出现问题/Path f=new Path(hdfs:/gc04vm12:9000/javawrhdfsfile); /Path f=new Path(javawrhdfsfile);/relative path,it will be in the user home 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 10 页 - - - - - - - - - Linux 下 Hadoop 的伪分布式配置10 dir,f.isAbsolute() is false FSDataOutputStream out=fs.create(f,true); for(int i=0;i5;i+) out.writeChars(zhankunlin+i+n); out.close(); System.out.println(write finished,it produced a file: +f.toString();/ System.out.println(read the file: +f.toString(); FSDataInputStream in=fs.open(f); IOUtils.copyBytes(in, System.out, 4096,false); System.out.println(read finished!); IOUtils.closeStream(out); catch(IOException e) e.printStackTrace(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 10 页 - - - - - - - - -