当前位置:文档之家› Hadoop集群10:MapReduce初级案例

Hadoop集群10:MapReduce初级案例

Hadoop集群10:MapReduce初级案例
Hadoop集群10:MapReduce初级案例

Hadoop集群10:MapReduce初级案例

本文为Hadoop集群系列第九。 "数据去重"主要是为了掌握和利用并行化思想来对数据进行有意义的筛选。统计大数据集上的数据种类个数、从网站日志中计算访问地等这些看似庞杂的任务都会涉及数据去重。下面就进入这个实例的MapReduce程序设计。

1.1 实例描述

对数据文件中的数据进行去重。数据文件中的每行都是一个数据。

样例输入如下所示:

1)file1:

2012-3-1 a

2012-3-2 b

2012-3-3 c

2012-3-4 d

2012-3-5 a

2012-3-6 b

2012-3-7 c

2012-3-3 c

2)file2:

2012-3-1 b

2012-3-2 a

2012-3-3 b

2012-3-4 d

2012-3-5 a

2012-3-6 c

2012-3-7 d

2012-3-3 c

样例输出如下所示:

2012-3-1 a

2012-3-1 b

2012-3-2 a

2012-3-2 b

2012-3-3 b

2012-3-3 c

2012-3-4 d

2012-3-5 a

2012-3-6 b

2012-3-6 c

2012-3-7 c

2012-3-7 d

1.2 设计思路

数据去重的最终目标是让原始数据中出现次数超过一次的数据在输出文件中只出现一次。我们自然而然会想到将同一个数据的所有记录都交给一台reduce机器,无论这个数据出现多少次,只要在最终结果中输出一次就可以了。具体就是

reduce的输入应该以数据作为key,而对value-list则没有要求。当reduce接收到一个时就直接将key复制到输出的key中,并将value设置成空值。

在MapReduce流程中,map的输出经过shuffle过程聚集成后会交给reduce。所以从设计好的reduce输入可以反推出map的输出key应为数据,value任意。继续反推,map输出数据的key为数据,而在这个实例中每个数据代表输入文件中的一行内容,所以map阶段要完成的任务就是在采用Hadoop默认的作业输入方式之后,将value设置为key,并直接输出(输出中的value任意)。map中的结果经过shuffle过程之后交给reduce。reduce阶段不会管每个key有多少个value,它直接将输入的key复制为输出的key,并输出就可以了(输出中的value 被设置成空了)。

1.3 程序代码

程序代码如下所示:

1.package com.hebut.mr;

2.import java.io.IOException;

3.import org.apache.hadoop.conf.Configuration;

4.import org.apache.hadoop.fs.Path;

5.import org.apache.hadoop.io.IntWritable;

6.import org.apache.hadoop.io.Text;

7.import org.apache.hadoop.mapreduce.Job;

8.import org.apache.hadoop.mapreduce.Mapper;

9.import org.apache.hadoop.mapreduce.Reducer;

10.import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;

11.import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

12.import org.apache.hadoop.util.GenericOptionsParser;

13.public class Dedup {

14.//map将输入中的value复制到输出数据的key上,并直接输出

15.public static class Map extends Mapper{

16.private static Text line=new Text();//每行数据

17.//实现map函数

18.public void map(Object key,Text value,Context context)

19. throws IOException,InterruptedException{

20. line=value;

21. context.write(line, new Text(""));

22. }

23. }

24.//reduce将输入中的key复制到输出数据的key上,并直接输出

25.public static class Reduce extends Reducer{

26.//实现reduce函数

27.public void reduce(Text key,Iterable values,Context conte

xt)

28. throws IOException,InterruptedException{

29. context.write(key, new Text(""));

30. }

31. }

32.public static void main(String[] args) throws Exception{

33. Configuration conf = new Configuration();

34.//这句话很关键

35. conf.set("mapred.job.tracker", "192.168.1.2:9001");

36. String[] ioArgs=new String[]{"dedup_in","dedup_out"};

37. String[] otherArgs = new GenericOptionsParser(conf, ioArgs).getRem

ainingArgs();

38.if (otherArgs.length != 2) {

39. System.err.println("Usage: Data Deduplication ");

40. System.exit(2);

41. }

42. Job job = new Job(conf, "Data Deduplication");

43. job.setJarByClass(Dedup.class);

44.//设置Map、Combine和Reduce处理类

45. job.setMapperClass(Map.class);

46. job.setCombinerClass(Reduce.class);

47. job.setReducerClass(Reduce.class);

48.//设置输出类型

49. job.setOutputKeyClass(Text.class);

50. job.setOutputValueClass(Text.class);

51.//设置输入和输出目录

52. FileInputFormat.addInputPath(job, new Path(otherArgs[0]));

53. FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));

54. System.exit(job.waitForCompletion(true) ? 0 : 1);

55. }

56.}

1.4 代码结果

1)准备测试数据

通过Eclipse下面的"DFS Locations"在"/user/hadoop"目录下创建输入文件"dedup_in"文件夹(备注:"dedup_out"不需要创建。)如图1.4-1所示,已经成功创建。

图1.4-1 创建"dedup_in" 图1.4.2 上传"file*.txt"

然后在本地建立两个txt文件,通过Eclipse上传到"/user/hadoop/dedup_in"文件夹中,两个txt文件的内容如"实例描述"那两个文件一样。如图1.4-2所示,成功上传之后。

从SecureCRT远处查看"Master.Hadoop"的也能证实我们上传的两个文件。

查看两个文件的内容如图1.4-3所示:

图1.4-3 文件"file*.txt"内容

2)查看运行结果

这时我们右击Eclipse的"DFS Locations"中"/user/hadoop"文件夹进行刷新,这时会发现多出一个"dedup_out"文件夹,且里面有3个文件,然后打开双其"part-r-00000"文件,会在Eclipse中间把内容显示出来。如图1.4-4所示。

图1.4-4 运行结果

此时,你可以对比一下和我们之前预期的结果是否一致。

2、数据排序

"数据排序"是许多实际任务执行时要完成的第一项工作,比如学生成绩评比、数据建立索引等。这个实例和数据去重类似,都是先对原始数据进行初步处理,为进一步的数据操作打好基础。下面进入这个示例。

2.1 实例描述

对输入文件中数据进行排序。输入文件中的每行内容均为一个数字,即一个数据。要求在输出中每行有两个间隔的数字,其中,第一个代表原始数据在原始数据集中的位次,第二个代表原始数据。

样例输入:

1)file1:

2

32

654

32

15

756

65223

2)file2:

5956

22

650

92

3)file3:

26

54

6

样例输出:

1 2

2 6

3 15

4 22

5 26

6 32

7 32

8 54

9 92

10 650

11 654

12 756

13 5956

14 65223

2.2 设计思路

这个实例仅仅要求对输入数据进行排序,熟悉MapReduce过程的读者会很快想到在MapReduce过程中就有排序,是否可以利用这个默认的排序,而不需要自己再实现具体的排序呢?答案是肯定的。

但是在使用之前首先需要了解它的默认排序规则。它是按照key值进行排序的,如果key为封装int的IntWritable类型,那么MapReduce按照数字大小对key排序,如果key为封装为String的Text类型,那么MapReduce按照字典顺序对字符串排序。

了解了这个细节,我们就知道应该使用封装int的IntWritable型数据结构了。也就是在map中将读入的数据转化成IntWritable型,然后作为key值输出(value任意)。reduce拿到之后,将输入的key作为value 输出,并根据value-list中元素的个数决定输出的次数。输出的key(即代码中的linenum)是一个全局变量,它统计当前key的位次。需要注意的是这个程序中没有配置Combiner,也就是在MapReduce过程中不使用Combiner。这主要是因为使用map和reduce就已经能够完成任务了。

2.3 程序代码

程序代码如下所示

1.package com.hebut.mr;

2.import java.io.IOException;

3.import org.apache.hadoop.conf.Configuration;

4.import org.apache.hadoop.fs.Path;

5.import org.apache.hadoop.io.IntWritable;

6.import org.apache.hadoop.io.Text;

7.import org.apache.hadoop.mapreduce.Job;

8.import org.apache.hadoop.mapreduce.Mapper;

9.import org.apache.hadoop.mapreduce.Reducer;

10.import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;

11.import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

12.import org.apache.hadoop.util.GenericOptionsParser;

13.public class Sort {

14.//map将输入中的value化成IntWritable类型,作为输出的key

15.public static class Map extends

16.Mapper{

17.private static IntWritable data=new IntWritable();

18.//实现map函数

19.public void map(Object key,Text value,Context context)

20. throws IOException,InterruptedException{

21. String line=value.toString();

22. data.set(Integer.parseInt(line));

23. context.write(data, new IntWritable(1));

24. }

25. }

26.//reduce将输入中的key复制到输出数据的key上,

27.//然后根据输入的value-list中元素的个数决定key的输出次数

28.//用全局linenum来代表key的位次

29.public static class Reduce extends

30. Reducer{

31.private static IntWritable linenum = new IntWritable(1);

32.//实现reduce函数

33.public void reduce(IntWritable key,Iterable values,Context

context)

34. throws IOException,InterruptedException{

35.for(IntWritable val:values){

36. context.write(linenum, key);

37. linenum = new IntWritable(linenum.get()+1);

38. }

39. }

40. }

41.public static void main(String[] args) throws Exception{

42. Configuration conf = new Configuration();

43.//这句话很关键

44. conf.set("mapred.job.tracker", "192.168.1.2:9001");

45. String[] ioArgs=new String[]{"sort_in","sort_out"};

46. String[] otherArgs = new GenericOptionsParser(conf, ioArgs).getRemainingAr

gs();

47.if (otherArgs.length != 2) {

48. System.err.println("Usage: Data Sort ");

49. System.exit(2);

50. }

51. Job job = new Job(conf, "Data Sort");

52. job.setJarByClass(Sort.class);

53.//设置Map和Reduce处理类

54. job.setMapperClass(Map.class);

55. job.setReducerClass(Reduce.class);

56.//设置输出类型

57. job.setOutputKeyClass(IntWritable.class);

58. job.setOutputValueClass(IntWritable.class);

59.//设置输入和输出目录

60. FileInputFormat.addInputPath(job, new Path(otherArgs[0]));

61. FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));

62. System.exit(job.waitForCompletion(true) ? 0 : 1);

63. }

64.}

2.4 代码结果

1)准备测试数据

通过Eclipse下面的"DFS Locations"在"/user/hadoop"目录下创建输入文件"sort_in"文件夹(备注:"sort_out"不需要创建。)如图2.4-1所示,已经成功创建。

图2.4-1 创建"sort_in" 图2.4.2 上传"file*.txt"

然后在本地建立三个txt文件,通过Eclipse上传到"/user/hadoop/sort_in"文件夹中,三个txt文件的内容如"实例描述"那三个文件一样。如图2.4-2所示,成功上传之后。

从SecureCRT远处查看"Master.Hadoop"的也能证实我们上传的三个文件。

查看两个文件的内容如图2.4-3所示:

图2.4-3 文件"file*.txt"内容

2)查看运行结果

这时我们右击Eclipse的"DFS Locations"中"/user/hadoop"文件夹进行刷新,这时会发现多出一个"sort_out"文件夹,且里面有3个文件,然后打开双其"part-r-00000"文件,会在Eclipse中间把内容显示出来。如图2.4-4所示。

图2.4-4 运行结果

3、平均成绩

"平均成绩"主要目的还是在重温经典"WordCount"例子,可以说是在基础上的微变化版,该实例主要就是实现一个计算学生平均成绩的例子。

3.1 实例描述

对输入文件中数据进行就算学生平均成绩。输入文件中的每行内容均为一个学生的姓名和他相应的成绩,如果有多门学科,则每门学科为一个文件。要求在输出中每行有两个间隔的数据,其中,第一个代表学生的姓名,第二个代表其平均成绩。

样本输入:

1)math:

张三 88

李四 99

王五 66

赵六 77

2)china:

张三 78

李四 89

王五 96

赵六 67

3)english:

张三 80

李四 82

王五 84

赵六 86

样本输出:

张三 82

李四 90

王五 82

赵六 76

3.2 设计思路

计算学生平均成绩是一个仿"WordCount"例子,用来重温一下开发MapReduce程序的流程。程序包括两部分的内容:Map 部分和Reduce部分,分别实现了map和reduce的功能。

Map处理的是一个纯文本文件,文件中存放的数据时每一行表示一个学生的姓名和他相应一科成绩。Mapper处理的数据是由InputFormat分解过的数据集,其中InputFormat的作用是将数据集切割成小数据集InputSplit,每一个InputSlit 将由一个Mapper负责处理。此外,InputFormat中还提供了一个RecordReader的实现,并将一个InputSplit解析成对提供给了map函数。InputFormat的默认值是TextInputFormat,它针对文本文件,按行将文本切割成InputSlit,并用LineRecordReader将InputSplit解析成对,key是行在文本中的位置,value是文件中的一行。

Map的结果会通过partion分发到Reducer,Reducer做完Reduce操作后,将通过以格式OutputFormat输出。

Mapper最终处理的结果对,会送到Reducer中进行合并,合并的时候,有相同key的键/值对则送到同一个Reducer上。Reducer是所有用户定制Reducer类地基础,它的输入是key和这个key对应的所有value的一个迭代器,同时还有Reducer的上下文。Reduce的结果由Reducer.Context的write方法输出到文件中。

3.3 程序代码

程序代码如下所示:

1.package com.hebut.mr;

2.

3.import java.io.IOException;

4.

5.import java.util.Iterator;

6.

7.import java.util.StringTokenizer;

8.

9.import org.apache.hadoop.conf.Configuration;

10.

11.import org.apache.hadoop.fs.Path;

12.

13.import org.apache.hadoop.io.IntWritable;

14.

15.import org.apache.hadoop.io.LongWritable;

16.

17.import org.apache.hadoop.io.Text;

18.

19.import org.apache.hadoop.mapreduce.Job;

20.

21.import org.apache.hadoop.mapreduce.Mapper;

22.

23.import org.apache.hadoop.mapreduce.Reducer;

24.

25.import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;

26.

27.import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;

28.

29.import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

30.

31.import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;

32.

33.import org.apache.hadoop.util.GenericOptionsParser;

34.

35.public class Score {

36.

37.public static class Map extends

38.

39. Mapper {

40.

41.// 实现map函数

42.

43.public void map(LongWritable key, Text value, Context context)

44.

45. throws IOException, InterruptedException {

46.

47.// 将输入的纯文本文件的数据转化成String

48.

49. String line = value.toString();

50.

51.// 将输入的数据首先按行进行分割

52.

53. StringTokenizer tokenizerArticle = new StringTokenizer(line, "\n");

54.

55.// 分别对每一行进行处理

56.

57.while (tokenizerArticle.hasMoreElements()) {

58.

59.// 每行按空格划分

60.

61. StringTokenizer tokenizerLine = new StringTokenizer(tokenizerAr

ticle.nextToken());

62.

63. String strName = tokenizerLine.nextToken();// 学生姓名部分

64.

65. String strScore = tokenizerLine.nextToken();// 成绩部分

66.

67. Text name = new Text(strName);

68.

69.int scoreInt = Integer.parseInt(strScore);

70.

71.// 输出姓名和成绩

72.

73. context.write(name, new IntWritable(scoreInt));

74.

75. }

76.

77. }

78.

79. }

80.

81.public static class Reduce extends

82.

83. Reducer {

84.

85.// 实现reduce函数

86.

87.public void reduce(Text key, Iterable values,

88.

89. Context context) throws IOException, InterruptedException {

90.

91.int sum = 0;

92.

93.int count = 0;

94.

95. Iterator iterator = values.iterator();

96.

97.while (iterator.hasNext()) {

98.

99. sum += iterator.next().get();// 计算总分

100.

101. count++;// 统计总的科目数

102.

103. }

104.

105.int average = (int) sum / count;// 计算平均成绩

106.

107. context.write(key, new IntWritable(average));

108.

109. }

110.

111. }

112.

113.public static void main(String[] args) throws Exception {

114.

115. Configuration conf = new Configuration();

116.

117.// 这句话很关键

118.

119. conf.set("mapred.job.tracker", "192.168.1.2:9001");

120.

121. String[] ioArgs = new String[] { "score_in", "score_out" };

122.

123. String[] otherArgs = new GenericOptionsParser(conf, ioArgs).getRemai ningArgs();

124.

125.if (otherArgs.length != 2) {

126.

127. System.err.println("Usage: Score Average ");

128.

129. System.exit(2);

130.

131. }

132.

133. Job job = new Job(conf, "Score Average");

134.

135. job.setJarByClass(Score.class);

136.

137.// 设置Map、Combine和Reduce处理类

138.

139. job.setMapperClass(Map.class);

140.

141. job.setCombinerClass(Reduce.class);

142.

143. job.setReducerClass(Reduce.class);

144.

145.// 设置输出类型

146.

147. job.setOutputKeyClass(Text.class);

148.

149. job.setOutputValueClass(IntWritable.class);

150.

151.// 将输入的数据集分割成小数据块splites,提供一个RecordReder的实现

152.

153. job.setInputFormatClass(TextInputFormat.class);

154.

155.// 提供一个RecordWriter的实现,负责数据输出

156.

157. job.setOutputFormatClass(TextOutputFormat.class);

158.

159.// 设置输入和输出目录

160.

161. FileInputFormat.addInputPath(job, new Path(otherArgs[0]));

162.

163. FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));

164.

165. System.exit(job.waitForCompletion(true) ? 0 : 1);

166.

167. }

168.

169.}

3.4 代码结果

1)准备测试数据

通过Eclipse下面的"DFS Locations"在"/user/hadoop"目录下创建输入文件"score_in"文件夹(备注:"score_out"不需要创建。)如图3.4-1所示,已经成功创建。

图3.4-1 创建"score_in" 图3.4.2 上传三门分数

然后在本地建立三个txt文件,通过Eclipse上传到"/user/hadoop/score_in"文件夹中,三个txt文件的内容如"实例描述"那三个文件一样。如图3.4-2所示,成功上传之后。

备注:文本文件的编码为"UTF-8",默认为"ANSI",可以另存为时选择,不然中文会出现乱码。

从SecureCRT远处查看"Master.Hadoop"的也能证实我们上传的三个文件。

查看三个文件的内容如图3.4-3所示:

图3.4.3 三门成绩的内容

2)查看运行结果

这时我们右击Eclipse的"DFS Locations"中"/user/hadoop"文件夹进行刷新,这时会发现多出一个"score_out"文件夹,且里面有3个文件,然后打开双其"part-r-00000"文件,会在Eclipse中间把内容显示出来。如图3.4-4所示。

图3.4-4 运行结果

4、单表关联

前面的实例都是在数据上进行一些简单的处理,为进一步的操作打基础。"单表关联"这个实例要求从给出的数据中寻找所关心的数据,它是对原始数据所包含信息的挖掘。下面进入这个实例。

Hadoop集群部署

1.HDFS:HADOOP的分布式文件系统 HDFS:是一个分布式文件系统(整个系统中有多种角色,共同协作完成文件系统的功能) 功能:提供一个目录结构,顶层目录为:/ 可以:创建文件夹、删除文件或文件夹、重命名文件、列出文件夹下的文件(涉及元数据操作) 保存文件、读取文件等(涉及元数据操作、文件块读写) 特点:可以存储海量的文件,如果容量不够,添加服务器(data node)即可文件被分散存储在若干台datanode服务器上(存储目录中) 一个文件也可能被切分成多个文件块(block块)分散存储在若干台datanode服务器每一个文件(文件块)在整个集群中,可以存储多个副本 (一个文件存几个副本、一个文件按多大来切块,是由客户端决定?) hdfs的运作机制: 客户端存入的文件, 一方面由datanode存储文件内容(block) 另一方面由namenode记录文件的块信息(?块,?副本,在哪些dn上) 2.HDFS安装 2.1. 集群环境准备 1、克隆出4台linux虚拟机 2、修改每一台虚拟机的主机名:hdp20-01 hdp20-02 hdp20-03 hdp20-04 3、修改每一台虚拟机的ip地址: 192.168.33.31 192.168.33.32 192.168.33.33 192.168.33.34 4、修改每一台虚拟机的网卡物理地址 vi /etc/udev/rules.d/70-...... 把eth0的那一行删掉,然后把下一行的eth1改成eth0

5、重启linux服务器:reboot 6、在windows上配置这几台linux服务器的域名映射: 改好后,同步scp给所有其他机器 7、用crt软件试连接 8、对每一台linux服务器关闭防火墙 8、对每一台linux机器配置域名映射 scp /etc/hosts hdp20-02:/etc/ scp /etc/hosts hdp20-03:/etc/ scp /etc/hosts hdp20-04:/etc/ 验证:比如在hdp20-01上, ping hdp20-02 ###看是否能ping通 9、在每台linux服务器上安装jdk 上传jdk安装包 解压 然后,将安装好的目录scp到其他所有机器的相同路径 然后,将改好的/etc/profile 拷贝scp到其他所有机器的对应路径下

Hadoop集群安装配置教程_Hadoop2.6.0_Ubuntu_CentOS

Hadoop集群安装配置教程_Hadoop2.6.0_Ubuntu/CentOS 本教程讲述如何配置Hadoop 集群,默认读者已经掌握了Hadoop 的单机伪分布式配置,否则请先查看Hadoop安装教程_单机/伪分布式配置或CentOS安装Hadoop_单机/伪分布式配置。 本教程由厦门大学数据库实验室出品,转载请注明。本教程适合于原生Hadoop 2,包括Hadoop 2.6.0, Hadoop 2.7.1 等版本,主要参考了官方安装教程,步骤详细,辅以适当说明,保证按照步骤来,都能顺利安装并运行Hadoop。另外有Hadoop安装配置简略版方便有基础的读者快速完成安装。 为了方便新手入门,我们准备了两篇不同系统的Hadoop 伪分布式配置教程。但其他Hadoop 教程我们将不再区分,可同时适用于Ubuntu 和CentOS/RedHat 系统。例如本教程以Ubuntu 系统为主要演示环境,但对Ubuntu/CentOS 的不同配置之处、CentOS 6.x 与CentOS 7 的操作区别等都会尽量给出注明。 环境 本教程使用Ubuntu 14.04 64位作为系统环境,基于原生Hadoop 2,在Hadoop 2.6.0 (stable)版本下验证通过,可适合任何Hadoop 2.x.y 版本,例如Hadoop 2.7.1,Hadoop 2.4.1 等。 本教程简单的使用两个节点作为集群环境: 一个作为Master 节点,局域网IP 为192.168.1.121;另一个作为Slave 节点,局域网IP 为192.168.1.122。 准备工作 Hadoop 集群的安装配置大致为如下流程: 1.选定一台机器作为Master 2.在Master 节点上配置hadoop 用户、安装SSH server、安装Java 环境 3.在Master 节点上安装Hadoop,并完成配置 4.在其他Slave 节点上配置hadoop 用户、安装SSH server、安装Java 环境 5.将Master 节点上的/usr/local/hadoop 目录复制到其他Slave 节点上 6.在Master 节点上开启Hadoop 配置hadoop 用户、安装SSH server、安装Java 环境、安装Hadoop 等过程已经在Hadoop安装教程_单机/伪分布式配置或CentOS安装Hadoop_单机/伪分布式配置中有详细介绍,请前往查看,不再重复叙述。 继续下一步配置前,请先完成上述流程的前 4 个步骤。 网络配置 假设集群所用的节点都位于同一个局域网。 如果使用的是虚拟机安装的系统,那么需要更改网络连接方式为桥接(Bridge)模式,才能实现多个节点互连,例如在VirturalBox 中的设置如下图。此外,如果节点的系统是在虚拟机中直接复制的,要确保各个节点的Mac 地址不同(可以点右边的按钮随机生成MAC 地址,否则IP 会冲突):

hadoop集群部署之双虚拟机版

1、采用一台机器开两个虚拟机的方式构成两台电脑的环境,用root登录。 分别查看其IP地址:输入# ifconfig,可得主机IP:192.168.1.99;分机为:192.168.1.100。 2、在两台机器上的/etc/hosts均添加相应的主机名和IP地址: 这里主机名命名为shenghao,分机名命名为slave: 保存后重启网络: 3、两台机器上均创立hadoop用户(注意是用root登陆) # useradd hadoop # passwd hadoop 输入111111做为密码 登录hadoop用户: 注意,登录用户名为hadoop,而不是自己命名的shenghao。 4、ssh的配置 进入centos的“系统→管理→服务器设置→服务,查看sshd服务是否运行。 在所有的机器上生成密码对: # ssh-keygen -t rsa 这时hadoop目录下生成一个.ssh的文件夹, 可以通过# ls .ssh/来查看里面产生的私钥和公钥:id_rsa和id_rsa.pub。 更改.ssh的读写权限: # chmod 755 .ssh 在namenode上(即主机上)

进入.ssh,将id_rsa.pub直接复制为authorized_keys(namenode的公钥): # cp id_rsa.pub authorized_keys 更改authorized_keys的读写权限: # chmod 644 authorized_keys 【这个不必须,但保险起见,推荐使用】 然后上传到datanode上(即分机上): # scp authorized_keys hadoop@slave:/home/hadoop/.ssh # cd .. 退出.ssh文件夹 这样shenghao就可以免密码登录slave了: 然后输入exit就可以退出去。 然后在datanode上(即分机上): 将datanode上之前产生的公钥id_rsa.pub复制到namenode上的.ssh目录中,并重命名为slave.id_rsa.pub,这是为了区分从各个datanode上传过来的公钥,这里就一个datanode,简单标记下就可。 # scp -r id_rsa.pub hadoop@shenghao:/home/hadoop/.ssh/slave.id_rsa.pub 复制完毕,此时,由于namenode中已经存在authorized_keys文件,所以这里是追加,不是复制。在namenode上执行以下命令,将每个datanode的公钥信息追加: # cat slave.id_rsa.pub >> authorized_keys 这样,namenode和datanode之间便可以相互ssh上并不需要密码: 然后输入exit就可以退出去。 5、hadoop的集群部署 配置hadoop前一定要配置JDK,请参考相关资料,这里就不赘述了。 将下载好的hadoop-0.19.0.tar.gz文件上传到namenode的/home/hadoop/hadoopinstall 解压文件: # tar zxvf hadoop-0.19.0.tar.gz 在/erc/profile的最后添加hadoop的路径: # set hadoop path export HADOOP_HOME=/home/hadoop/hadoopinstall/hadoop-0.20.2 export PATH=$HADOOP_HOME/bin:$PATH 之后配置hadoop/conf中的4个文件:

hadoop集群完整配置过程详细笔记

本文为笔者安装配置过程中详细记录的笔记 1.下载hadoop hadoop-2.7.1.tar.gz hadoop-2.7.1-src.tar.gz 64位linux需要重新编译本地库 2.准备环境 Centos6.4 64位,3台 hadoop0 192.168.1.151namenode hadoop1 192.168.1.152 datanode1 Hadoop2 192.168.1.153 datanode2 1)安装虚拟机: vmware WorkStation 10,创建三台虚拟机,创建时,直接建立用户ha,密码111111.同时为root密码。网卡使用桥接方式。 安装盘 、 2). 配置IP.创建完成后,设置IP,可以直接进入桌面,在如下菜单下配置IP,配置好后,PING 确认好用。 3)更改三台机器主机名 切换到root用户,更改主机名。 [ha@hadoop0 ~]$ su - root Password: [root@hadoop0 ~]# hostname hadoop0 [root@hadoop0 ~]# vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=hadoop0 以上两步后重启服务器。三台机器都需要修改。 4)创建hadoop用户 由于在创建虚拟机时,已自动创建,可以省略。否则用命令创建。

5)修改hosts文件 [root@hadoop0 ~]# vi /etc/hosts 127.0.0.1 localhostlocalhost.localdomain localhost4 localhost4.localdomain4 ::1localhostlocalhost.localdomain localhost6 localhost6.localdomain6 192.168.1.151 hadoop0 192.168.1.152 hadoop1 192.168.1.153 hadoop2 此步骤需要三台机器都修改。 3.建立三台机器间,无密码SSH登录。 1)三台机器生成密钥,使用hadoop用户操作 [root@hadoop0 ~]# su– ha [ha@hadoop0 ~]$ ssh -keygen -t rsa 所有选项直接回车,完成。 以上步骤三台机器上都做。 2)在namenode机器上,导入公钥到本机认证文件 [ha@hadoop0 ~]$ cat ~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys 3)将hadoop1和hadoop2打开/home/ha/.ssh/ id_rsa.pub文件中的内容都拷贝到hadoop0的/home/ha /.ssh/authorized_keys文件中。如下: 4)将namenode上的/home/ha /.ssh/authorized_keys文件拷贝到hadoop1和hadoop2的/home/ha/.ssh文件夹下。同时在三台机器上将authorized_keys授予600权限。 [ha@hadoop1 .ssh]$ chmod 600 authorized_keys 5)验证任意两台机器是否可以无密码登录,如下状态说明成功,第一次访问时需要输入密码。此后即不再需要。 [ha@hadoop0 ~]$ ssh hadoop1 Last login: Tue Aug 11 00:58:10 2015 from hadoop2 4.安装JDK1.7 1)下载JDK(32或64位),解压 [ha@hadoop0 tools]$ tar -zxvf jdk-7u67-linux-x64.tar.gz 2)设置环境变量(修改/etx/profile文件), export JAVA_HOME=/usr/jdk1.7.0_67 export CLASSPATH=:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin 3)使环境变量生效,然后验证JDK是否安装成功。

如何基于Docker快速搭建多节点Hadoop集群

如何基于Docker快速搭建多节点Hadoop集群 Docker最核心的特性之一,就是能够将任何应用包括Hadoop打包到Docker镜像中。这篇教程介绍了利用Docker在单机上快速搭建多节点 Hadoop集群的详细步骤。作者在发现目前的Hadoop on Docker项目所存在的问题之后,开发了接近最小化的Hadoop镜像,并且支持快速搭建任意节点数的Hadoop集群。 Docker最核心的特性之一,就是能够将任何应用包括Hadoop打包到Docker镜像中。这篇教程介绍了利用Docker在单机上快速搭建多节点 Hadoop集群的详细步骤。作者在发现目前的Hadoop on Docker项目所存在的问题之后,开发了接近最小化的Hadoop镜像,并且支持快速搭建任意节点数的Hadoop集群。 一. 项目简介 GitHub: kiwanlau/hadoop-cluster-docker 直接用机器搭建Hadoop集群是一个相当痛苦的过程,尤其对初学者来说。他们还没开始跑wordcount,可能就被这个问题折腾的体无完肤了。而且也不是每个人都有好几台机器对吧。你可以尝试用多个虚拟机搭建,前提是你有个性能杠杠的机器。 我的目标是将Hadoop集群运行在Docker容器中,使Hadoop开发者能够快速便捷地在本机搭建多节点的Hadoop集群。其实这个想法已经有了不少实现,但是都不是很理想,他们或者镜像太大,或者使用太慢,或者使用了第三方工具使得使用起来过于复杂。下表为一些已知的Hadoop on Docker项目以及其存在的问题。 我的项目参考了alvinhenrick/hadoop-mutinode项目,不过我做了大量的优化和重构。alvinhenrick/hadoop-mutinode项目的GitHub主页以及作者所写的博客地址如下: GitHub:Hadoop (YARN) Multinode Cluster with Docker

Hadoop集群安装详细步骤

Hadoop集群安装详细步骤|Hadoop安装配置 文章分类:综合技术 Hadoop集群安装 首先我们统一一下定义,在这里所提到的Hadoop是指Hadoop Common,主要提供DFS(分布式文件存储)与Map/Reduce的核心功能。 Hadoop在windows下还未经过很好的测试,所以笔者推荐大家在linux(cent os 5.X)下安装使用。 准备安装Hadoop集群之前我们得先检验系统是否安装了如下的必备软件:ssh、rsync和Jdk1.6(因为Hadoop需要使用到Jdk中的编译工具,所以一般不直接使用Jre)。可以使用yum install rsync来安装rsync。一般来说ssh是默认安装到系统中的。Jdk1.6的安装方法这里就不多介绍了。 确保以上准备工作完了之后我们就开始安装Hadoop软件,假设我们用三台机器做Hadoop集群,分别是:192.168.1.111、192.168.1.112和192.168.1.113(下文简称111,112和113),且都使用root用户。 下面是在linux平台下安装Hadoop的过程: 在所有服务器的同一路径下都进行这几步,就完成了集群Hadoop软件的安装,是不是很简单?没错安装是很简单的,下面就是比较困难的工作了。 集群配置

根据Hadoop文档的描述“The Hadoop daemons are N ameNode/DataNode and JobTracker/TaskTracker.”可以看出Hadoop核心守护程序就是由 NameNode/DataNode 和JobTracker/TaskTracker这几个角色构成。 Hadoop的DFS需要确立NameNode与DataNode角色,一般NameNode会部署到一台单独的服务器上而不与DataNode共同同一机器。另外Map/Reduce服务也需要确立JobTracker和TaskTracker的角色,一般JobTracker与NameNode共用一台机器作为master,而TaskTracker与DataNode同属于slave。至于NameNode/DataNode和JobTracker/TaskTracker的概念这里就不多讲了,需要了解的可以参看相关文档。 在这里我们使用111作为NameNode与JobTracker,其它两台机器作为DataNode和TaskTracker,具体的配置如下: 环境的配置 在$HADOOP_HOME/conf/hadoop-env.sh中定义了Hadoop启动时需要的环境变量设置,其中我们至少需要配置JAVA_HOME(Jdk的路径)变量;另外我们一般还需要更改HADOOP_LOG_DIR(Hadoop的日志路径)这个变量,默认的设置是“export HADOOP_LOG_DIR=${HADOOP_HOME}/logs”,一般需要将其配置到一个磁盘空间比较大的目录下。 Hadoop核心程序配置 Hadoop 包括一组默认配置文件($HADOOP_HOME/src目录下的 core/core-default.xml, hdfs/hdfs-default.xml 和 mapred/mapred-default.xml),大家可以先好好看看并理解默认配置文件中的那些属性。虽然默认配置文件能让Hadoop核心程序顺利启动,但对于开发人员来说一般需要自己的来设置一些常规配置以满足开发和业务的需求,所以我们需要对默认配置文件的值进行覆盖,具体方法如下。 $HADOOP_HOME/conf/core-site.xml是Hadoop的核心配置文件,对应并覆盖core-default.xml中的配置项。我们一般在这个文件中增加如下配置: Core-site.xml代码 1. 2. 3. 4. https://www.doczj.com/doc/d68983963.html, 5. hdfs://192.168.1.111:9000 6. 7.

hadoop学习之hadoop完全分布式集群安装

hadoop学习之hadoop完全分布式集群安装 注:本文的主要目的是为了记录自己的学习过程,也方便与大家做交流。转载请注明来自: https://www.doczj.com/doc/d68983963.html,/ab198604/article/details/8250461 要想深入的学习hadoop数据分析技术,首要的任务是必须要将hadoop集群环境搭建起来,可以将hadoop简化地想象成一个小软件,通过在各个物理节点上安装这个小软件,然后将其运行起来,就是一个hadoop分布式集群了。 说来简单,但是应该怎么做呢?不急,本文的主要目的就是让新手看了之后也能够亲自动手实施这些过程。由于本人资金不充裕,只能通过虚拟机来实施模拟集群环境,虽然说是虚机模拟,但是在虚机上的hadoop的集群搭建过程也可以使用在实际的物理节点中,思想是一样的。也如果你有充裕的资金,自己不介意烧钱买诸多电脑设备,这是最好不过的了。 也许有人想知道安装hadoop集群需要什么样的电脑配置,这里只针对虚拟机环境,下面介绍下我自己的情况: CPU:Intel酷睿双核 2.2Ghz 内存: 4G 硬盘: 320G 系统:xp 老实说,我的本本配置显然不够好,原配只有2G内存,但是安装hadoop集群时实在是很让人崩溃,本人亲身体验过后实在无法容忍,所以后来再扩了2G,虽然说性能还是不够好,但是学习嘛,目前这种配置还勉强可以满足学习要求,如果你的硬件配置比这要高是最好不过的了,如果能达到8G,甚至16G内存,学习hadoop表示无任何压力。 说完电脑的硬件配置,下面说说本人安装hadoop的准备条件: 1 安装Vmware WorkStation软件 有些人会问,为何要安装这个软件,这是一个VM公司提供的虚拟机工作平台,后面需要在这个平台上安装linux操作系统。具体安装过程网上有很多资料,这里不作过多的说明。 2 在虚拟机上安装linux操作系统 在前一步的基础之上安装linux操作系统,因为hadoop一般是运行在linux平台之上的,虽然现在也有windows版本,但是在linux上实施比较稳定,也不易出错,如果在windows安装hadoop集群,估计在安装过程中面对的各种问题会让人更加崩溃,其实我还没在windows 上安装过,呵呵~ 在虚拟机上安装的linux操作系统为ubuntu10.04,这是我安装的系统版本,为什么我会使用这个版本呢,很简单,因为我用的熟^_^其实用哪个linux系统都是可以的,比如,你可以用centos, redhat, fedora等均可,完全没有问题。在虚拟机上安装linux的过程也在此略过,如果不了解可以在网上搜搜,有许多这方面的资料。 3 准备3个虚拟机节点 其实这一步骤非常简单,如果你已经完成了第2步,此时你已经准备好了第一个虚拟节点,那第二个和第三个虚拟机节点如何准备?可能你已经想明白了,你可以按第2步的方法,再分别安装两遍linux系统,就分别实现了第二、三个虚拟机节点。不过这个过程估计会让你很崩溃,其实还有一个更简单的方法,就是复制和粘贴,没错,就是在你刚安装好的第一个虚拟机节点,将整个系统目录进行复制,形成第二和第三个虚拟机节点。简单吧!~~ 很多人也许会问,这三个结点有什么用,原理很简单,按照hadoop集群的基本要求,其中一个是master结点,主要是用于运行hadoop 程序中的namenode、secondorynamenode和jobtracker任务。用外两个结点均为slave结点,其中一个是用于冗余目的,如果没有冗余,就不能称之为hadoop了,所以模拟hadoop集群至少要有3个结点,如果电脑配置非常高,可以考虑增加一些其它的结点。slave结点主要将运行hadoop程序中的datanode和tasktracker任务。 所以,在准备好这3个结点之后,需要分别将linux系统的主机名重命名(因为前面是复制和粘帖操作产生另两上结点,此时这3个结点的主机名是一样的),重命名主机名的方法:

Hadoop集群搭建(二)HDFS_2017

Hadoop集群搭建(二)HDFS HDFS只是Hadoop最基本的一个服务,很多其他服务,都是基于HDFS 展开的。所以部署一个HDFS集群,是很核心的一个动作,也是大数据平台的开始。 安装Hadoop集群,首先需要有Zookeeper才可以完成安装。如果没有Zookeeper,请先部署一套Zookeeper。另外,JDK以及物理主机的一些设置等。都请参考下文: Hadoop集群搭建(一) Zookeeper 下面开始HDFS的安装 HDFS主机分配 1.19 2.168.67.101 c6701 --Namenode+datanode 2.192.168.67.102 c6702 --datanode 3.192.168.67.103 c6703 --datanode 1. 安装HDFS,解压hadoop- 2.6.0-EDH-0u2.tar.gz 我同时下载2.6和2.7版本的软件,先安装2.6,然后在执行2.6到2.7的升级步骤 https://www.doczj.com/doc/d68983963.html,eradd hdfs 2.echo "hdfs:hdfs"| chpasswd 3.su - hdfs

4.cd /tmp/software 5.tar -zxvf hadoop-2. 6.0-EDH-0u2.tar.gz -C /home/hdfs/ 6.mkdir -p /data/hadoop/temp 7.mkdir -p /data/hadoop/journal 8.mkdir -p /data/hadoop/hdfs/name 9.mkdir -p /data/hadoop/hdfs/data 10.chown -R hdfs:hdfs /data/hadoop 11.chown -R hdfs:hdfs /data/hadoop/temp 12.chown -R hdfs:hdfs /data/hadoop/journal 13.chown -R hdfs:hdfs /data/hadoop/hdfs/name 14.chown -R hdfs:hdfs /data/hadoop/hdfs/data 15.$ pwd 16./home/hdfs/hadoop-2.6.0-EDH-0u2/etc/hadoop 2. 修改core-site.xml对应的参数 1.$ cat core-site.xml 2.<configuration> 3.<!--指定hdfs的nameservice为ns --> 4.<property> 5.<name>fs.defaultFS</name> 6.<value>hdfs://ns</value> 7.</property> 8.<!--指定hadoop数据临时存放目录-->

hadoop集群安装_鲁德性能测试

hadoop集群安装 要想深入的学习hadoop集群数据分析技术,首要的任务是必须要将hadoop集群环境搭建起来,可以将hadoop简化地想象成一个小软件,通过在各个物理节点上安装这个小软件,然后将其运行起来,就是一个hadoop分布式集群了。 说来简单,但是应该怎么做呢?不急,本文的主要目的就是让新手看了之后也能够亲自动手实施这些过程。由于本人资金不充裕,只能通过虚拟机来实施模拟集群环境,虽然说是虚机模拟,但是在虚机上的hadoop的集群搭建过程也可以使用在实际的物理节点中,思想是一样的。也如果你有充裕的资金,自己不介意烧钱买诸多电脑设备,这是最好不过的了。 也许有人想知道安装hadoop集群需要什么样的电脑配置,这里只针对虚拟机环境,下面介绍下我自己的情况: CPU:Intel酷睿双核2.2Ghz 内存: 4G 硬盘: 320G 系统:xp 老实说,我的本本配置显然不够好,原配只有2G内存,但是安装hadoop集群时实在是很让人崩溃,本人亲身体验过后实在无法容忍,所以后来再扩了2G,虽然说性能还是不够好,但是学习嘛,目前这种配置还勉强可以满足学习要求,如果你的硬件配置比这要高是最好不过的了,如果能达到8G,甚至16G内存,学习hadoop表示无任何压力。 说完电脑的硬件配置,下面说说本人安装hadoop的准备条件: 1安装Vmware WorkStation软件 有些人会问,为何要安装这个软件,这是一个VM公司提供的虚拟机工作平台,后面需要在这个平台上安装linux操作系统。具体安装过程网上有很多资料,这里不作过多的说明。 2在虚拟机上安装linux操作系统 在前一步的基础之上安装linux操作系统,因为hadoop一般是运行在linux平台之上的,虽然现在也有windows版本,但是在linux上实施比较稳定,也不易出错,如果在windows安装hadoop集群,估计在安装过程中面对的各种问题会让人更加崩溃,其实我还没在windows 上安装过,呵呵~ 在虚拟机上安装的linux操作系统为ubuntu10.04,这是我安装的系统版本,为什么我会使用这个版本呢,很简单,因为我用的熟^_^其实用哪个linux系统都是可以的,比如,你可以用

Hadoop云计算平台搭建最详细过程(共22页)

Hadoop云计算平台及相关组件搭建安装过程详细教程 ——Hbase+Pig+Hive+Zookeeper+Ganglia+Chukwa+Eclipse等 一.安装环境简介 根据官网,Hadoop已在linux主机组成的集群系统上得到验证,而windows平台是作为开发平台支持的,由于分布式操作尚未在windows平台上充分测试,所以还不作为一个生产平台。Windows下还需要安装Cygwin,Cygwin是在windows平台上运行的UNIX模拟环境,提供上述软件之外的shell支持。 实际条件下在windows系统下进行Hadoop伪分布式安装时,出现了许多未知问题。在linux系统下安装,以伪分布式进行测试,然后再进行完全分布式的实验环境部署。Hadoop完全分布模式的网络拓补图如图六所示: (1)网络拓补图如六所示: 图六完全分布式网络拓补图 (2)硬件要求:搭建完全分布式环境需要若干计算机集群,Master和Slaves 处理器、内存、硬盘等参数要求根据情况而定。 (3)软件要求 操作系统64位版本:

并且所有机器均需配置SSH免密码登录。 二. Hadoop集群安装部署 目前,这里只搭建了一个由三台机器组成的小集群,在一个hadoop集群中有以下角色:Master和Slave、JobTracker和TaskTracker、NameNode和DataNode。下面为这三台机器分配IP地址以及相应的角色: ——master,namenode,jobtracker——master(主机名) ——slave,datanode,tasktracker——slave1(主机名) ——slave,datanode,tasktracker——slave2(主机名) 实验环境搭建平台如图七所示:

Hadoop集群部署方案

Hadoop集群部署方案

目录 1.网络拓扑 (1) 2.软件安装 (1) 2.1.修改主机名 (1) 2.2.修改host文件 (1) 2.3.创建Hadoop 用户 (2) 2.4.禁用防火墙 (2) 2.5.设置ssh登录免密码 (2) 2.6.安装hadoop (4) 3.集群配置 (5) 3.1.修改脚本 (5) 3.1.1................................................ hadoop-env.sh 5 3.1.2................................................... y arn-env.sh 5 3.2.配置文件 (5) 3.2.1................................................ core-site.xml 5 3.2.2................................................ hdfs-site.xml 7 3.2.3.............................................. mapred-site.xml 10 3.2. 4................................................ yarn-site.xml 11 3.2.5.配置datanode 14 3.3.创建目录 (14)

4.启动zk集群 (14) 5.启动hadoop (14) 5.1.启动所有节点journalnode (14) 5.2.格式化h1 namenode (15) 5.3.在h1上格式化ZK (15) 5.4.启动h1的namenode,zkfc (16) 5.5.启动h2上namenode (16) 5.6.同步h1上的格式化数据到h2 (16) 5.7.启动 HDFS (17) 5.8.启动 YARN (18) 5.9.启动h2 ResourceManager (18) 5.10........................................ h4上启动 JobHistoryServer 19 5.11.......................................... 查看ResourceManager状态19 6.浏览器访问 (19) https://www.doczj.com/doc/d68983963.html,node管理界面 (19) 6.1.1............................... http://192.168.121.167:50070 19 6.1.2............................... http://192.168.121.168:50070 20 6.2.ResourceManager管理界面 (20) 6.2.1............................... http://192.168.121.167:8088/ 21 6.2.2............................... http://192.168.121.168:8088/ 21 6.3.JournalNode HTTP 服务 (21) 6.3.1............................... http://192.168.121.167:8480/ 21 6.4.Datanode HTTP服务 (22)

hadoopq集群搭建

疑难小结 1:HDFS进入安全模式: Name node is in safemode mode 退出安全模式, 执行命令: hadoop dfsadmin -safemode leave 2:INFO util.NativeCodeLoader - Unable to load native-hadoop library for your platform... using builtin-Java classes where applicable -- hadoop的本地库加载失败。 检查native库的版本信息,32bit的版本和64bit的版本在不匹配的机器上会加载失败,检查的命令是file native库依赖的glibc的版本问题。如果在高版本gcc(glibc)的机器上编译的native库,放到低版本的机器上使用,会由于glibc版本不一致导致该错误。 3: maps to localhost, but this does not map back 解决: 原因: 因为DNS服务器把 192.168.x.x 的地址都反向解析成 localhost ,而DNS服务器不是自己的,不能改。 办法: 编辑ssh 客户端的 /etc/hosts 文件,把出问题的IP 地址和主机名加进去,就不会报这样的错了。 4: jps命令正常,但是8088端口的WEB页面无法访问 解决方案: 检查一下防火墙和selinux状态, 将防火墙和selinux关闭 防火墙: service iptables status 永久修改: 修改/etc/selinux/config文件中设置SELINUX=disabled ,然后重启服务器。 5: 8088端口访问正常,但是看不到datanode节点 解决方案: 可能出现的问题和解决方案: 1.8080端口没有打开, 手动启动yarn 2.8080端口被其他进程占用, kill掉占用该端口的进程, 然后重启yarn

Hadoop集群架构搭建分析

Hadoop集群架构搭建分析 一、概述 1、集群在6台机器上搭建完成,IP与hostname设置如下: 10.8.3.240 namenode 10.8.3.246 datanode1 10.8.3.239 datanode2 10.8.3.249 datanode3 10.8.3.238 datanode4 10.8.3.251 datanode5 2、软件安装描述: Hadoop Zookeeper HBase MongoDB namenode √√√datanode1 √√ datanode2 √√ datanode3 √√ datanode4 √√ datanode5 √ 3、进程运行描述 namenode datanode1datanode2datanode3datanode4datanode5 NameNode√ DataNode√√√√√JobTracker√ TaskTracker√√√√√HMaster√ HRegionServer√ √ Secondary NameNode HQuorumPeer √√√ 注: (1)NameNode、DataNode、SecondaryNameNode是hdfs进程 (2)JobTracker、TaskTracker是mapreducer进程 (3)HMaster、HRegionServer是HBase进程 (4)HQuorumPeer是Zookeeper进程

1、设置IP 修改/etc/sysconfig/network-scripts/ifcfg-eth0文件:DEVICE=eth0 --网卡名称 BOOTPROTO=static --获取静态IP HW ADDR=00:E0:4C:F8:3B:CE --机器MAC地址 IPADDR=10.8.3.240 --IP NETMASK=255.255.255.0 --子网掩码 NETWORK=10.8.3.254 --默认网关 ONBOOT=yes 2、设置hostname 在所有机器的/etc/hosts 文件下添加: 10.8.3.240 namenode 10.8.3.246 datanode1 10.8.3.239 datanode2 10.8.3.249 datanode3 10.8.3.238 datanode4 10.8.3.251 datanode5 注:为了使机器辨别到hostname,必须重启机器。

hadoop完全分布式的搭建步骤

Hadoop完全分布式的搭建步骤 步骤目录: 第一步:安装虚拟机 第二步:Linux的环境配置 第三步:安装jdk并配置环境变量 第四步:建立专门运行Hadoop的专有用户abc 第五步:ssh免密码登录配置 第六步:Hadoop的安装与配置 第七步:格式化hdfs和启动守护进程 详细步骤如下 第一步:安装虚拟机 第二步:Linux的环境配置 1.修改IP(桥接模式) vim /etc/sysconfig/network-scriptps/ifcfg-eth0 (推荐使用手动的方法设置) 2.修改主机名 vim /etc/sysconfig/network 3.修改主机名和IP的映射关系 vim /etc/hosts

192.168.6.115 hadoop01 192.168.6.116 hadoop02 192.168.6.117 hadoop03 4.关闭防火墙 service iptables status//查看状态 service iptables stop//关闭防火墙 chkconfig iptables --list //查看防火墙是否开机自启 chkconfig iptables off//关闭防火墙开机自启 5.重启系统 reboot 6.查看主机名:hostname 查看IP:ifconfig 查看防火墙状态:service iptables status 7.查看各个主机之间是否能通信:互相ping IP地址 第三步:安装jdk并配置环境变量 1.上传jdk到根目录 2.创建目录mkdir /usr/java 3.解压jdk tar –zxvf jdk-7u76-linux-i586.tar.gz –C /usr/java cd /usr/java ls 4.将Java添加到环境变量(使得在任何目录下均可使用Java)

hadoop.集群搭建详解

hadoop2.2.0集群搭建 PS:apache提供的hadoop-2.2.0的安装包是在32位操作系统编译的,因为hadoop依赖一些C++的本地库,所以如果在64位的操作上安装 hadoop-2.2.0就需要重新在64操作系统上重新编译 1.准备工作:(参考伪分布式搭建) 1.1修改Linux主机名 1.2修改IP 1.3修改主机名和IP的映射关系 1.4关闭防火墙 1.5ssh免登陆 1.6.安装JDK,配置环境变量等 2.集群规划:

PS: 在hadoop2.0中通常由两个NameNode组成,一个处于active 状态, 另一个处于standby状态。Active NameNode对外提供服务, 而Standby NameNode则不对外提供服务,仅同步active namenode 的状态,以便能够在它失败时快速进行切换。 hadoop2.0官方提供了两种HDFS HA的解决方案,一种是NFS,另一种是QJM。这里我们使用简单的QJM。在该方案中, 主备NameNode之间通过一组JournalNode同步元数据信息, 一条数据只要成功写入多数JournalNode即认为写入成功。 通常配置奇数个JournalNode

这里还配置了一个zookeeper集群,用于ZKFC (DFSZKFailoverController)故障转移,当Active NameNode挂 掉了,会自动切换Standby NameNode为standby状态3.安装步骤: 3.1.安装配置zooekeeper集群 3.1.1解压 tar -zxvf zookeeper-3.4.5.tar.gz -C /cloud/ 3.1.2修改配置 cd /cloud/zookeeper-3.4.5/conf/ cp zoo_sample.cfg zoo.cfg vim zoo.cfg 修改:dataDir=/cloud/zookeeper-3.4.5/tmp 在最后添加: server.1=hadoop01:2888:3888 server.2=hadoop02:2888:3888 server.3=hadoop03:2888:3888 保存退出 然后创建一个tmp文件夹

大数据之hadoop分布式集群参数配置

hadoop分布式集群参数配置(一) ------master节点hadoop配置 上篇文章中我们已经将master节点的网络IP、hostname文件、hosts文件配置完成,接下来还有hadoop相关配置文件需要修改。 1、hdfs-site.xml 在hadoop的配置文件中与HDFS(hadoop分布式文件系统)相关的是hdfs-core.xml文件。在伪分布集群中只有一个节点,因此此节点即要有NameNode 功能也要有DataNode功能。在工作环境中这两个是不会在一个节点上的,在我们的多节点分布式集群中master只运行NameNode因此需在hdfs-site.xml文件中删除DataNode相关配置。 打开虚拟机在终端中输入cd hadoop/etc/hadoop 命令进入hadoop配置文件目录。 终端输入命令vim hdfs-site.xml进入vim编辑界面,按下图步骤删除原来伪分布集群配置的DataNode相关配置,并将数据冗余数量设置为2。 输入i进入编辑模式,编辑后的文件内容如下所示。

最后退出编辑模式,保存并退出。 2、core-site.xml 在core-site.xml中指定一个节点运行hdfs服务。在之前伪分布集群中只有一个节点,因此我们使用的是localhost,如今在集群中有三个节点,我们约定使用master。 在终端中输入vim core-site.xml按下图操作修改配置文件。

修改后内容如下所示 记得退出并保存。 3、yarn-site.xml 在yarn-site.xml 里可以修改与资源管理模块YARN相关的一些配置。 终端中输入vim yarn-site.xml进行以下更改,将资源调度管理任务放置于master节点上 最终修改后的文件内容如下图所示。

相关主题
文本预览
相关文档 最新文档