大数据学习——HADOOP集群搭建
4.1 HADOOP集群搭建
4.1.1集群简介
HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起 HDFS集群: 负责海量数据的存储,集群中的角色主要有 NameNode / DataNode YARN集群: 负责海量数据运算时的资源调度,集群中的角色主要有 ResourceManager /NodeManager (那mapreduce是什么呢?它其实是一个应用程序开发包) 本集群搭建案例,以5节点为例进行搭建,角色分配如下: hdp-node- NameNode SecondaryNameNode hdp-node- ResourceManager hdp-node- DataNode NodeManager hdp-node- DataNode NodeManager hdp-node- DataNode NodeManager 部署图如下: 4.1.2服务器准备
本案例使用虚拟机服务器来搭建HADOOP集群,所用软件及版本: ü Vmware 11.0 ü Centos 6.5 64bit 4.1.3网络环境准备
ü 采用NAT方式联网 ü 网关地址:192.168.33.1 ü 3个服务器节点IP地址:192.168.33.101、192.168.33.102、192.168.33.103 ü 子网掩码:255.255.255.0 4.1.4服务器系统设置
ü 添加HADOOP用户 ü 为HADOOP用户分配sudoer权限 ü 同步时间 ü 设置主机名 n hdp-node- n hdp-node- n hdp-node- ü 配置内网域名映射: n 192.168.33.101 hdp-node- n 192.168.33.102 hdp-node- n 192.168.33.103 hdp-node- ü 配置ssh免密登陆 ü 配置防火墙 4.1. Jdk环境安装
ü 上传jdk安装包 ü 规划安装目录 /home/hadoop/apps/jdk_1.7.65 ü 解压安装包 ü 配置环境变量 /etc/profile 4.1. HADOOP安装部署
补充: HADOOP的版本选择 、APACHE官方版本 大版本: 0.20. .x .x 2.6. 2.7. 、商业发行版(商业版提供完善的管理系统、修bug可能领先于官方): Cloudera公司的CDH:5.7.x ü 上传HADOOP安装包 ü 规划安装目录 /root/apps/hadoop-2.6. ü 解压安装包 ü 修改配置文件 $HADOOP_HOME/etc/hadoop/ 最简化配置如下: vi hadoop-env.sh # The java implementation to use. export JAVA_HOME=/home/hadoop/apps/jdk1..0_51 vi core-site.xml <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://hdp-node-01:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/HADOOP/apps/hadoop-2.6./tmp</value> </property> </configuration> vi hdfs-site.xml <configuration> <property> <name>dfs.namenode.name.dir</name> <value>/home/hadoop/data/name,/path2/,/path3/,nfs://</value> </property> <!---namenode配置多个目录和datanode配置多个目录,有什么区别?----> <property> <name>dfs.datanode.data.dir</name> <value>/home/hadoop/data/data,/path2/</value> </property> <property> <name>dfs.replication</name> <value></value> </property> <property> <name>dfs.secondary.http.address</name> <value>hdp-node-:</value> </property> </configuration> vi mapred-site.xml <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration> vi yarn-site.xml <configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop01</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration> vi salves hdp-node- hdp-node- hdp-node- 4.1. 启动集群
初始化HDFS bin/hadoop namenode -format 启动HDFS sbin/start-dfs.sh 启动YARN sbin/start-yarn.sh 4.1. 测试
、上传文件到HDFS
从本地上传一个文本文件到hdfs的/wordcount/input目录下 [HADOOP@hdp-node- ~]$ HADOOP fs -mkdir -p /wordcount/input [HADOOP@hdp-node- ~]$ HADOOP fs -put /home/HADOOP/somewords.txt /wordcount/input 、运行一个mapreduce程序
在HADOOP安装目录下,运行一个示例mr程序 cd $HADOOP_HOME/share/hadoop/mapreduce/ hadoop jar mapredcue-example-2.6..jar wordcount /wordcount/input /wordcount/output 集群使用初步
5.1 HDFS使用
、查看集群状态 命令: hdfs dfsadmin –report 可以看出,集群共有3个datanode可用 也可打开web控制台查看HDFS集群信息,在浏览器打开http://hdp-node-01:50070/ 、上传文件到HDFS ² 查看HDFS中的目录信息 命令: hadoop fs –ls / ² 上传文件 命令: hadoop fs -put ./ scala-2.10..tgz to / ² 从HDFS下载文件 命令: hadoop fs -get /yarn-site.xml 5.2 MAPREDUCE使用
mapreduce是hadoop中的分布式运算编程框架,只要按照其编程规范,只需要编写少量的业务逻辑代码即可实现一个强大的海量数据并发处理程序 5.2. Demo开发——wordcount
、需求 从大量(比如T级别)文本文件中,统计出每一个单词出现的总次数 、mapreduce实现思路 Map阶段: a) 从HDFS的源数据文件中逐行读取数据 b) 将每一行数据切分出单词 c) 为每一个单词构造一个键值对(单词,) d) 将键值对发送给reduce Reduce阶段: a) 接收map阶段输出的单词键值对 b) 将相同单词的键值对汇聚成一组 c) 对每一组,遍历组中的所有“值”,累加求和,即得到每一个单词的总次数 d) 将(单词,总次数)输出到HDFS的文件中 、 具体编码实现 ()定义一个mapper类 //首先要定义四个泛型的类型 //keyin: LongWritable valuein: Text //keyout: Text valueout:IntWritable public class WordCountMapper extends Mapper<LongWritable, Text, Text, IntWritable>{ //map方法的生命周期: 框架每传一行数据就被调用一次 //key : 这一行的起始点在文件中的偏移量 //value: 这一行的内容 @Override protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { //拿到一行数据转换为string String line = value.toString(); //将这一行切分出各个单词 String[] words = line.split(" "); //遍历数组,输出<单词,1> for(String word:words){ context.write(new Text(word), new IntWritable()); } } } ()定义一个reducer类 //生命周期:框架每传递进来一个kv 组,reduce方法被调用一次 @Override protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException { //定义一个计数器 int count = ; //遍历这一组kv的所有v,累加到count中 for(IntWritable value:values){ count += value.get(); } context.write(key, new IntWritable(count)); } } ()定义一个主类,用来描述job并提交job public class WordCountRunner { //把业务逻辑相关的信息(哪个是mapper,哪个是reducer,要处理的数据在哪里,输出的结果放哪里。。。。。。)描述成一个job对象 //把这个描述好的job提交给集群去运行 public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); Job wcjob = Job.getInstance(conf); //指定我这个job所在的jar包 // wcjob.setJar("/home/hadoop/wordcount.jar"); wcjob.setJarByClass(WordCountRunner.class); wcjob.setMapperClass(WordCountMapper.class); wcjob.setReducerClass(WordCountReducer.class); //设置我们的业务逻辑Mapper类的输出key和value的数据类型 wcjob.setMapOutputKeyClass(Text.class); wcjob.setMapOutputValueClass(IntWritable.class); //设置我们的业务逻辑Reducer类的输出key和value的数据类型 wcjob.setOutputKeyClass(Text.class); wcjob.setOutputValueClass(IntWritable.class); //指定要处理的数据所在的位置 FileInputFormat.setInputPaths(wcjob, "hdfs://hdp-server01:9000/wordcount/data/big.txt"); //指定处理完成之后的结果所保存的位置 FileOutputFormat.setOutputPath(wcjob, new Path("hdfs://hdp-server01:9000/wordcount/output/")); //向yarn集群提交这个job boolean res = wcjob.waitForCompletion(true); System.exit(res?:); } 5.2. 程序打包运行
将程序打包
准备输入数据
vi /home/hadoop/test.txt Hello tom Hello jim Hello ketty Hello world Ketty tom 在hdfs上创建输入数据文件夹: hadoop fs mkdir -p /wordcount/input 将words.txt上传到hdfs上 hadoop fs –put /home/hadoop/words.txt /wordcount/input 将程序jar包上传到集群的任意一台服务器上 使用命令启动执行wordcount程序jar包
$ hadoop jar wordcount.jar cn.itcast.bigdata.mrsimple.WordCountDriver /wordcount/input /wordcount/out 查看执行结果
$ hadoop fs –cat /wordcount/out/part-r-
大数据学习——HADOOP集群搭建的更多相关文章
- 大数据学习——hadoop集群搭建2.X
1.准备Linux环境 1.0先将虚拟机的网络模式选为NAT 1.1修改主机名 vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=itcast ### ...
- 大数据平台Hadoop集群搭建
一.概念 Hadoop是由java语言编写的,在分布式服务器集群上存储海量数据并运行分布式分析应用的开源框架,其核心部件是HDFS与MapReduce.HDFS是一个分布式文件系统,类似mogilef ...
- 大数据中Hadoop集群搭建与配置
前提环境是之前搭建的4台Linux虚拟机,详情参见 Linux集群搭建 该环境对应4台服务器,192.168.1.60.61.62.63,其中60为主机,其余为从机 软件版本选择: Java:JDK1 ...
- 大数据学习——Storm集群搭建
安装storm之前要安装zookeeper 一.安装storm步骤 1.下载安装包 2.解压安装包 .tar.gz storm 3.修改配置文件 mv /root/apps/storm/conf/st ...
- 大数据测试之hadoop集群配置和测试
大数据测试之hadoop集群配置和测试 一.准备(所有节点都需要做):系统:Ubuntu12.04java版本:JDK1.7SSH(ubuntu自带)三台在同一ip段的机器,设置为静态IP机器分配 ...
- 大数据中HBase集群搭建与配置
hbase是分布式列式存储数据库,前提条件是需要搭建hadoop集群,需要Zookeeper集群提供znode锁机制,hadoop集群已经搭建,参考 Hadoop集群搭建 ,该文主要介绍Zookeep ...
- Java+大数据开发——Hadoop集群环境搭建(一)
1集群简介 HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起 HDFS集群: 负责海量数据的存储,集群中的角色主要有 NameNode / DataN ...
- Java+大数据开发——Hadoop集群环境搭建(二)
1. MAPREDUCE使用 mapreduce是hadoop中的分布式运算编程框架,只要按照其编程规范,只需要编写少量的业务逻辑代码即可实现一个强大的海量数据并发处理程序 2. Demo开发--wo ...
- 大数据-HBase HA集群搭建
1.下载对应版本的Hbase,在我们搭建的集群环境中选用的是hbase-1.4.6 将下载完成的hbase压缩包放到对应的目录下,此处我们的目录为/opt/workspace/ 2.对已经有的压缩包进 ...
随机推荐
- 二分查找 2015百度之星初赛1 HDOJ 5246 超级赛亚ACMer
题目传送门 /* 二分找到不大于m的最大的数,记做p,只要a[p] + k <= a[p+1]就继续 注意:特判一下当没有比m小的数的情况:) */ #include <cstdio> ...
- 题解报告:zoj 3261 Connections in Galaxy War(离线并查集)
Description In order to strengthen the defense ability, many stars in galaxy allied together and bui ...
- poj2455Secret Milking Machine(二分+最大流)
链接 二分距离,小于当前距离的边容量+1,使最后流>=t 注意 会有重边 #include <iostream> #include<cstdio> #include< ...
- 华容道 noip2013 70分搜索
题目描述 [问题描述] 小 B 最近迷上了华容道,可是他总是要花很长的时间才能完成一次.于是,他想到用编程来完成华容道:给定一种局面, 华容道是否根本就无法完成,如果能完成, 最少需要多少时间. 小 ...
- android开发学习 ------- Retrofit+Rxjava+MVP网络请求的实例
http://www.jianshu.com/p/7b839b7c5884 推荐 ,照着这个敲完 , 测试成功 , 推荐大家都去看一下 . 下面贴一下我照着这个敲完的代码: Book实体类 - 用 ...
- poj3616 Milking Time
思路: dp. 实现: #include <iostream> #include <cstdio> #include <algorithm> using names ...
- 上交oj1219 重要的逆序数对
题意: https://acm.sjtu.edu.cn/OnlineJudge/problem/1219 思路: 在经典的归并排序求逆序数对算法基础上稍作修改. 实现: #include <io ...
- 正确使用MySQL JDBC setFetchSize()方法解决JDBC处理大结果集 java.lang.OutOfMemoryError: Java heap space
昨天在项目中需要对日志的查询结果进行导出功能. 日志导出功能的实现是这样的,输入查询条件,然后对查询结果进行导出.由于日志数据量比较大.多的时候,有上亿条记录. 之前的解决方案都是多次查询,然后使用l ...
- 关于ie的内存泄漏与javascript内存释放
最近做一个公司的业务系统,公司要求能尽可能的与c/s近似,也就是如c/s一样,点击文本框可以弹出此项目的相关内容,进行选择输入. 我使用了弹出窗口,然后在子窗口双击选中项目,把选中的值返回给父 ...
- 一个PHP开发APP接口的视频教程
感觉php做接口方面的教程很少,无意中搜到了这个视频教程,希望能给一些人带来帮助http://www.imooc.com/learn/163