Hadoop是一个支持海量数据的分布式存储和分布式计算的平台 包含: HDFS YARN MapReduce 分布式管理系统(HDFS) 主要就是把数据存放在多态服务器上 是MapReduce的基础 文件切分 文件存放在一个磁盘上效率是最低的 读取效率低 文件特别大会超出单击的存储范围 文件磁盘上以字节数组的方式存储 数组可以进行拆分和组装 源文件不会受到影响 还可以将切分后的数据按照数组的偏移量拼接到一起 数据存储的原理: 不管文件的大小,所有的文件都是由字节数组构成 如果我们要切分文件,就是将一个字节数组分成多份 我们将切分后的数据拼接到一起,数据还可以继续使用 我们需要根据数据的偏移量将他们重新拼接到一起
前期准备 准备好三台虚拟机 master node1 node2 同步时间: 调整时区: 检查java环境是否正常:java-version 修改主机名:vim /etc/hostname 关闭防火墙: 配置网络: 免密登陆 ssh-keygen -t rsa 三次回车 ssh-copy-id master ssh-copy-id node1 ssh-copy-id node2 配置好映射文件: vim /etc/hosts 192.168.100.100:master 192.168.100.110:node1 192.168.100.120:node2 搭建Hadoop环境 1、上传Hadoop安装包到、usr/local/soft/解压 2、配置系统环境变量 export HADOOP_HOME=/usr/local/soft/hadoop-2.7.6 export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin 加载环境变量使其生效 source /etc/profile 3、修改hadoop配置文件(可以根据实际的需求来配置自定义文件) 在/usr/local/soft/hadoop-2.7.6/etc/hadoop目录下存放着与Hadoop相关的配置文件 1)hadoop-env.sh export JAVA_HOME=/usr/local/soft/jdk1.8.0_171 2)core-site.xml 3)hdfs-site.xml 4)mapared-site.xml 5)yarn-site.xml 6)slaves 4、将配置好的hadoop分发到node1 node2节点上 scp -r hadoop-2.7.6/ node1:`pwd` scp -r hadoop-2.7.6/ node2:`pwd` 5、格式化NameNode hdfs namenode -format 6、启动hadoop集群检查各个节点是否正确 start-all.sh master:namenode ResourceManager secondarynamenode node1,node2:datanode nodemanager
Hadoop序列化的问题
序列化 把内存中的对象转化为字节序列(或者其他传输协议)以便于存储到磁盘(持久化)和网络传输 反序列化 将收到的字符序列或者是次磁盘的持久化数据 转化为内存中的对象 特点: 紧凑、快速、可扩展、互操作 自定义bean对象实现序列化接口 在Hadoop框架内传递一个bean对象 那么该对象就需要实现序列化接口(Writable) 步骤: 1、实现Writable接口 2、反序列化的时候需要调用空参构造函数,所以必须有空参构造方法 public FlowBean(){ super(); } 3、重写序列化方法 public void write(DataOutPut out) throw Exception{ out.writexxx(xxx); out.writexxx(xxx); out.writexxx(xxx); } 4、重写反序列化方法 public void readFields(DataInput in) throw Exception{ xxx=in.readxxx(); xxx=in.readxxx(); xxx=in.readxxx(); } 注意反序列化的顺序和和序列化顺序要一致 5、要把结果显示在文件中,需要重写toString方法 可用"\t"分开 6、如果想要把自定义的bean放入key中传输,则需要实现Comparable接口,因为MapReduce框架中的Shuffle过程要求对key进行排序
标签:node2,xxx,Hadoop,hadoop,学习,node1,序列化,数据 From: https://www.cnblogs.com/lkd0910/p/16933735.html