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集群搭建的更多相关文章

  1. 大数据学习——hadoop集群搭建2.X

    1.准备Linux环境 1.0先将虚拟机的网络模式选为NAT 1.1修改主机名 vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=itcast ### ...

  2. 大数据平台Hadoop集群搭建

    一.概念 Hadoop是由java语言编写的,在分布式服务器集群上存储海量数据并运行分布式分析应用的开源框架,其核心部件是HDFS与MapReduce.HDFS是一个分布式文件系统,类似mogilef ...

  3. 大数据中Hadoop集群搭建与配置

    前提环境是之前搭建的4台Linux虚拟机,详情参见 Linux集群搭建 该环境对应4台服务器,192.168.1.60.61.62.63,其中60为主机,其余为从机 软件版本选择: Java:JDK1 ...

  4. 大数据学习——Storm集群搭建

    安装storm之前要安装zookeeper 一.安装storm步骤 1.下载安装包 2.解压安装包 .tar.gz storm 3.修改配置文件 mv /root/apps/storm/conf/st ...

  5. 大数据测试之hadoop集群配置和测试

    大数据测试之hadoop集群配置和测试   一.准备(所有节点都需要做):系统:Ubuntu12.04java版本:JDK1.7SSH(ubuntu自带)三台在同一ip段的机器,设置为静态IP机器分配 ...

  6. 大数据中HBase集群搭建与配置

    hbase是分布式列式存储数据库,前提条件是需要搭建hadoop集群,需要Zookeeper集群提供znode锁机制,hadoop集群已经搭建,参考 Hadoop集群搭建 ,该文主要介绍Zookeep ...

  7. Java+大数据开发——Hadoop集群环境搭建(一)

    1集群简介 HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起 HDFS集群: 负责海量数据的存储,集群中的角色主要有 NameNode / DataN ...

  8. Java+大数据开发——Hadoop集群环境搭建(二)

    1. MAPREDUCE使用 mapreduce是hadoop中的分布式运算编程框架,只要按照其编程规范,只需要编写少量的业务逻辑代码即可实现一个强大的海量数据并发处理程序 2. Demo开发--wo ...

  9. 大数据-HBase HA集群搭建

    1.下载对应版本的Hbase,在我们搭建的集群环境中选用的是hbase-1.4.6 将下载完成的hbase压缩包放到对应的目录下,此处我们的目录为/opt/workspace/ 2.对已经有的压缩包进 ...

随机推荐

  1. 18.3.2从Class上获取信息(方法)

    package d18_3_1; import java.lang.reflect.Method; import java.util.Arrays; /** * 获取Class对应类所包含的方法的四个 ...

  2. (转)深入理解Java对象的创建过程

    参考来源:http://blog.csdn.net/justloveyou_/article/details/72466416 摘要: 在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一 ...

  3. 17984 FFF团的怒火

    17984 FFF团的怒火 该题有题解 时间限制:1000MS  内存限制:65535K提交次数:55 通过次数:3 收入:3 题型: 编程题   语言: G++;GCC;VC;JAVA Descri ...

  4. R语言中的并行处理

    网上有人说foreach包可以并行,我就去弄了,结果发现一个普通的二重循环什么事都不错都很卡!捣鼓了半天才发现是foreach的问题 为了提速,做了如下事宜: 直接利用矩阵列加减,不是一个个遍历加 把 ...

  5. 动手实现 Redux(五):不要问为什么的 reducer

    经过了这么多节的优化,我们有了一个很通用的 createStore: function createStore (state, stateChanger) { const listeners = [] ...

  6. P3717 [AHOI2017初中组]cover

    题目背景 以下为不影响题意的简化版题目. 题目描述 一个n*n的网格图上有m个探测器,每个探测器有个探测半径r,问这n*n个点中有多少个点能被探测到. 输入输出格式 输入格式: 第一行3个整数n,m, ...

  7. ASP.NET相关事件及JS的执行顺序

    实验代码: ASPX: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="We ...

  8. 小程序java解密

    <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk16< ...

  9. javajsp,Servlet:Property 'Id' not found

    avax.el.PropertyNotFoundException: Property 'Id' not found on type  org.androidpn.server.model.CarSo ...

  10. js递归和数组去重(简单便捷的用法)

    1.递归例子<script type="text/javascript"> function test(num) { if(num < 0) { return; ...