IT十八掌徐培成HADOOP笔记.docx_第1页
IT十八掌徐培成HADOOP笔记.docx_第2页
IT十八掌徐培成HADOOP笔记.docx_第3页
IT十八掌徐培成HADOOP笔记.docx_第4页
IT十八掌徐培成HADOOP笔记.docx_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Hadoop本机集群机器:211 212 215 216 四台对应s100 s101 s102 s103 s104Ubuntu204-server-64-2-00 100s100 211node1Ubuntu204-server-64-2-01101s101212node2Ubuntu204-server-64-2-02102s102215node3Ubuntu204-server-64-2-03103s103215node3Ubuntu204-server-64-2-04104 s104216node4a) bigdate海量数据: 1byte = 8bit 1024B = 1M 210 1024M = 1G 2101024G = 1T 2101024T = 1P 2101024P = 1E 2101024E = 1Z 2101024Z = 1Y 210 1231231024Y = 1N 210存储 分布式存储计算分布式计算Hadoop(一头大象) Doug cutting Hadoop 可靠,可伸缩,分布式计算的开源软件。HDFS 去IOE(IBM+oracle+EMC) MapReduce MR /映射和化简,编程模型推荐 Big data 4V1) Volumn /题量大2) Variaty /样式多3) Velocity /速度快4) Valueless /价值密度低b) Hadoop的安装: (安装ubuntu系统)安装jdk Ln s /soft/jdk-xxx jdk配置环境变量JAVA_HOME = /soft/jdkPATH=”:/soft/jdk/bin”Source /etc/environmentJava version安装hadoopHadoop.tar.gzHadoop version配置环境变量HADOOP_HOMEPATH配置hadoop分三个模式:1. standelone |local /独立/本地模式,使用的本地文件系统Nothing查看文件系统的方式:查看文件系统 hadoop fs ls /没有守护进程,所有程序运行在同一JVM中,利用test和debug.2. Paeudo distributed Mode /伪分布模式3. Fully distributed mode/完全分布式 配置 SSH1) 安装ssh$sudo apt-get install ssh2) 生成密钥对Ssh-keygen t rsa P f /.ssh/Cd /.ssh3) 导入公钥数据到授权库中Cat /.ssh/id_rsa.pub /.ssh/authorized_keys4) 登录到localhostSsh localhost5) 格式化hdfs文件系统Hadoop namenode -format6) 启动所以进程Start-all.sh7) 查看进程Jps /5 RM NM NN DN 2NN8) 查看文件系统Hadoop fs -ls9) 创建文件系统Hadoop fs mkdir p /user/Ubuntu/dataHadoop fs ls R /c) Hadoop包含三个模块1) Hadoop common:支持其他模块的工具模块2) Hadoop Distributed File System (HDFS)分布式文件系统,提供了对应用程序数据的高吞吐量访问。进程:NameNode 名称节点NNDataNode 数据节点DNSecondaryNamenode 辅助名称节点2ndNN3) Hadoop YARN:作业调度与集群资源管理的框架。进程ResourceManager 资源管理RMNodeManager 节点管理器NM4) Hadoop MapReduce:基于yarn系统的对大数据集进行并行处理技术配置hadoop1) Standelone/locald) 完全分布式安装:1) 准备5台客户机本人集群机器:211 212 215 216 四台对应s100 s101 s102 s103 s104ip主机名ip主机名1. Ubuntu204-server-64-2-00 100s100 211node12. Ubuntu204-server-64-2-01101s101212node23. Ubuntu204-server-64-2-02102s102215node34. Ubuntu204-server-64-2-03103s103215node35. Ubuntu204-server-64-2-04104 s104216node42) 安装ssh 1) 安装ssh$sudo apt-get install ssh2) 生成密钥对ssh-keygen t rsa P f /.ssh/cd /.ssh3) 导入公钥数据到授权库中cat /.ssh/id_rsa.pub /.ssh/authorized_keysscp /root/.ssh/* node2:/root/.ssh/scp /root/.ssh/* node3:/root/.ssh/scp /root/.ssh/* node2:/root/.ssh/4) 登录其他机器:ssh node1ifconfig3) 安装jdk1. rpm -ivh /opt/jdk-7u79-linux-x64.rpm2. ln s /soft/jdk-xxx jdk3. 配置环境变量4. JAVA_HOME = /soft/jdk5. PATH=”;/soft/jdk/bin”6. source /etc/profile7. java version4) 安装hadoop1. tar zxvf hadoop-2.7.3.tar.gz2. Hadoop version3. 配置环境变量4. HADOOP_HOME=/soft/hadoop-2.7.35. PATH=:$HADOOP_HOME/bin:$HADOOP_HOME/sbin6. 配置hadoop查看文件系统 hadoop fs ls /配置文件/etc/hadoop/core-site.xml hdfs:/node1:8020 Hdfs-site.xml dfs.replication 3 Mapred-site.xml yarn Yarn-site.xml yarn.resourcemanager localhost yarn.nodemanager.aux-services mapreduce_shuffle 5) 配置文件-rw-r-r-. 1 root root 861 6月 6 10:41 core-site.xml-rw-r-r-. 1 root root 950 6月 6 10:41 hdfs-site.xml-rw-r-r-. 1 root root 844 6月 6 10:41 mapred-site.xml-rw-r-r-. 1 root root 728 6月 6 10:43 yarn-site.xml-rw-r-r-. 1 root root 12 6月 6 10:43 slaves/soft/hadoop/etc/hadoop/core-site.xmlfs.defaultFS=hdfs:/node1/soft/hadoop/etc/hadoop/hdfs-site.xmlreplication=3node.secondary.http-address=node4:50090/soft/hadoop/etc/hadoop/=yarnsoft/hadoop/etc/hadoop/yarn-site.xmlyarn.resourcemanager.hostname=node1/soft/hadoop/etc/hadoop/slavesnode2node3在集群上分发以上三个文件cd /soft/hadoop/etc/hadoopxsync core-site.xmlxsync yarn-site.xmlxsync slaves6) 首次启动hadoop1) 格式化文件系统$hadoop namenode -format2) 启动所有进程$start-all.sh3) 查询进程jsp4) 停止所有进程Stop-all.sh使用webui访问hadoop hdfs1)hdfs http:/node1:500702) dataNode http:/node2:500753) 2nn http:/node4:50090删除hadoop临时目录数据:默认:/tmp/ hadoop-root hadoop-root-datanode.pid(伪分布式产生)e) 几种脚本 scp rsync xsync xcall1) scp2) rsync 远程同步工具 主要备份和镜像支持链接,设备。 rsync rvl /soft/* ubuntus101:/soft3) 自定义脚本xsync,在集群上分发文件循环复制文件到所以节点的相同目录下rsync rvl /home/Ubuntu ubuntus101:xsync hello.txt/usr/local/bin/xsyncrootnode1 bin# vim xsync#!/bin/bashpcount=$#if(pcount1) ; then echo no args; exit;fip1=$1;#获取文件名称fname=basename $p1echo fname=$fname;#获取上级目录的绝对路径pdir=cd -P $(dirname $p1);pwdecho pdir=$pdir;#echo $p1;cuser=whoamifor (host=2; host5;host=host+1); do echo - node$host - #echo $pdir/$fname $cusernode$host:$pdir scp $pdir/$fname $cusernode$host:$pdirdone4) 编写/usr/local/bin/xcall脚本,在所有主机上执行相同的命令xcall rm rf /soft/jdk/usr/local/bin/xcall rootnode1 bin# cd /usr/local/binrootnode1 bin# xcall ls -l /soft/rootnode1 bin# xcall rm hello.txtrootnode1 bin# vim xcall#!/bin/bashpcount=$#if(pcount1) ; then echo no args; exit;fiecho - localhost -$echo $for (host=2; host5;host=host+1); do echo - node$host - #scp $pdir/$fname $cusernode$host:$pdir ssh node$host $donef) 整理hadoop的所有类库和配置文件解压缩hadoop-2.7.2.tar.gz 到目录下整理jar包抽取所有配置文件core_default.xmlhadoop-common-2.7.2.jar/core-default.xmlhdfs-default.xmlhadoop-hdfs-2.7.2.jar/hdfs-default.xmlyarn-default.xmlhadoop-yarn-common-2.7.3.jar/hdfs-default.xmlmapred-default.xmlhadoop-mapreduce-client-core-2.7.2.jar/mapred-default.xmlg) hadoop fs / 使用:hadoop fs mkdir p /user/Ubuntu/datahadoop fs put hello.txt /user/Ubuntu/data/hdfs dfs -lsr /hdfs dfs -cat /user/hello.txt./hadoop fs -ls /./hadoop fs ls R /./hadoop fs -mkdir test./hadoop fs -put /opt/test.sh /user 将本地文件存储至hadoop./hadoop fs get /user/t/ok.txt /home/t 将hadoop上某个文件down至本地已有目录下 ./hadoop fs -cat /user/test.sh hadoop fs rmr /user/t 删除hadoop上指定文件夹(包含子目录等)hadoop fs -touchz /user/new.txt在hadoop指定目录下新建一个空文件hadoop fs mv /user/test.txt /user/ok.txt (将test.txt重命名为ok.txt)hadoop dfs getmerge /user /home/t 将hadoop指定目录下所有内容保存为一个文件,同时down至本地hadoop job kill job-id 将正在运行的hadoop作业kill掉h) 修改本地的临时目录hadoop.tmp.dir1) 修改hadoop.tmp.dircore-site.xml hadoop.tmp.dir /soft/hadoop-root 2) 分发core-site.xml3) hadoop namenode format 后重启hadoopxcall mkdir /soft/hadoop-rootxcall rm rf /soft/hadoop/logsi) hadoop模块1. common2. hdfsstart-dfs.sh/stop-dfs.sh (先启动它)nndn2nn3. yarnstart-yarn.sh/stop-dfs.shrnnn4. mapredj) hadoop脚本分析1.start-all.sh libexec/hadoop-config.sh -设置变量 sbin/start-dfs.sh config $HADOOP_CONF_DIR - 启动hdfssbin/start-yarn.sh config $HADOOP_CONF_DIR-启动yarn2.libexec/hadoop-config.sh -设置变量COMMON_DIRHADOOP_CONF_DIR=HEAP_SIEZ=1000M,CLASSPATH=3.sbin/start-dfs.sh config $HADOOP_CONF_DIR启动hdfs1.libexec/hdfs-config.sh2.获取名称节点主机名NAMENODES= hdfs getconf namenodes3.启动名称节点 $HADOOP_prefix/sbin/hadoop-daemons.sh-config $hadoop_conp_dir-hostnames $namenodes-script $bin/hdfs start namenode $nameStartOpt4.启动datanode$HADOOP_prefix/sbin/hadoop-daemons.sh-config $hadoop_conp_dir-script $bin/hdfs start datanode $nameStartOpt5.启动2nn$HADOOP_prefix/sbin/hadoop-daemons.sh-config $hadoop_conp_dir-hostnames $secondarynamenode-script $bin/hdfs start secondarynamenode 4.libexec/hdfs-config.shlibexec/hadoop-config.sh5.sbin/hadoop-daemons.sh-启动守护进程脚本1.libexec/hdfs-config.sh-执行配置脚本2.slaves.sh -config $HADOOP_CONF_DIR cd $hadoop_prefic ;$bin/hadoop-daemon.sh config $hadoop_conf_dir “$”循环slaves文件,通过ssh方式登录远程主机,执行相应命令bin/hadoop-daemon.shhadoop-config.shbin/hdfshdfs getconf namenodeshdfs getconf secondaryNameNdoesk) 在各个机子上启动节点:hadoop-daemon.sh start namenodehadoop-daemon.sh start secondarynamenode hadoop-daemon.sh start datanodehadoop-daemon.sh stop datanode数据库四个特点:a atomic 原子性cconsistent一致性iisolation隔离性ddurable永久性l) 常用命令:格式化系统hadoop namenode formatput = copyFormLocalhadoop fs put /hdfs dsf puthdfs dfs put /重命名hdfs dfs mv ./sshd.txt ./how.txt下载hdfs dfs get ./ssh.txt ./kk.txthdfs dfs copyToLocal移动到hdfshdfs dfs moveFromLocal hello.txt .从hdfs移动到本地,没有实现。删除文件hdfs dfs rmdir 在hdfs上进行文件复制hdfs dfs cp /user/Ubuntu/hello.txt /user/hello2.txthadoop 配置信息namenode的本地目录配置成多个,则每个目录存放内容相同,可靠性。【hdfs-site.xml】.dir=file:/$hadoop.tmp.dir/dfs/name1,file:/$hadoop.tmp.dir/dfs/name2datanode 也可以配置多个目录,不是副目录。【hdfs-site.xml】.dir=file:/$hadoop.tmp.dir/dfs/name1,file:/$hadoop.tmp.dir/dfs/name2hadoop hdfs文件大小 128M磁盘的寻道时间=10ms 磁盘的IO速率:100MB/s 10 * 100 = ls * 100M/s = 100M通过API访问hdfsTestpublic void writeFile() throws Exception Configuration conf= new Configuration();FileSystem fs = FileSystem.get(conf);Path path = new Path(hdfs:/node1:8020/user/hello);/数据输出流FSDataOutputStream dos = fs.create(path);dos.write(hello world !.getBytes();dos.close();System.out.println(over);m) 在eclipse 安装hadoop插件,方便访问hdfs下载hadoop2x-eclipse-plugin.zip解压hadoop2x-eclipse-plugin.zip/release/*.jar(3)到eclipse安装目录下/plugins/下重启eclipse验证hadoop插件是否成功剖析文件写入过程,副本节点的选择(机架感知)自定义机架感知创建类实现DNSToSwitchMapping接口配置文件core-site.xmlcore-site.xmlnet.topology.node.switch.mapping.impl=com.it18zhang.rackaware.MyDNSToSwichmapping分发core-site.xml增加一个数据节点:克隆一台机器,一个节点 启动新节点hdfs是master /slave 架构,由一个名称节点以及多个数据节点构成,nn负责namespace管理以及client的访问。Namenode 存放元数据(名称,副本数,权限,快列表),不包含数据节点。rack aware策略使用oie和oev查看namenode的镜像文件和编辑日志文件离线工具:hdfs oiv p XML I dfs/name1/current/fsimage_000 o /image.xmlhdfs oiv p XML i xxx o /xxx.xml /fsimagehdfs oev p XML -i xxx o /xxx.xml /edit loghadoop-daemon.sh stop namenodehadoop-daemon.sh start namenodehdfs dfsadmin help saveNamespace查看nn的镜像文件hdfs oiv p XML I faimage o xxx 查看nn的编辑日志文件hdfs oev p XML faedit-xxx o xxx n) hadoop集群启动是首先进入安全模式如果集群出于安全模式,不能执行重要操作(写操作)。集群启动完成后,自动退出安全模式。安全模式操作hdfs dfsadmin safemode get /查看安全模式状态hdfs dfsadmin safemode anter /进入安全模式状态hdfs dfsadmin safemode leave /离开安全模式状态hdfs dfsadmin safemode wait /等待安全模式状态保存名字空间/融合镜像和编辑日志:进入安全模式hdfs dfsadmin safemode enter进行保存hdfs dfsadmin saveNamespace退出安全模式hdfs dfsadmin safemode leave一致性模型scp 实现二个远程主机之间的文件复制。$scp r hello.txt rootnode4:/user/xx.txt$scp r rootnode4:/user/xx.txt /$scp r -3 rootnode4:/user/hello.txt rootnoed1:/user/distcp 实现二个hadoop集群之间的递归数据复制hadoop distcp hdfs:/s101:8020/user/hello.txt hdfs:/s102:8020/user/kk.txt归档文件hadoop archive archiveName myhar.har p /user/Ubuntu /user/my查看归档:hdfs dfs lsr har:/user/my/myhar.har解归档:hdfs dfs cp har:/user/my/myhar.har /user/your数据完整性o) 在ubuntu上安装eclipse下载eclipase-jee-mars-R-linux-gtk-x86_64.tar.gztar考到ubuntu /soft下tar xzvf eclise-xxx.tar.gz配置环境变量:PATH=:/soft/eclipse启动(后台) eclipse &p) codec 编码解码器1.deflate .deflate2.gzip .gz3.bzip2.bz24.lzo.lzo5.lz4.lz46.snappy .snappydeflateCodec:length=2054672,compressTime=1766,decompress=615GzipCodec:length=2054684,compressTime=680,decompress=341BZip2Codec:length=1457864,compressTime=10271,decompress=1695LzoCodec:length=3636556,compressTime=499,decompress=303Lz4Code:length=3644382,compressTime=177,decompress=392SnappyCode:length=3987117,compressTime=424,decompress=434空间效能:Bzip2 deflate Gzip lzo lz4 snappy压缩时间:lz4 snappy lzo Gzip deflate Bzip2 解压缩时间:lzo Gzip lz4 snappy deflate Bzip2 使用hadoop的checknative命令检查本地库安装情况 hadoop checknative a安装lzo-2.06版lzo-2.06.tat.gz./configure enable-sharedmakemake install检查是否生成lzo库文件 find /usr/local/lib |grep lzo编译hadoop-lzo-master项目:hadoop-lzo-master.zip编译hadoop-lzoc_INCLUDE_PATH=/usr/local/includeLIBRARY_PATH=/usr/local/lib参考下文搭建maven环境。mvn clean test出现lzo共享库找不到,将liblzo2.so.xxx文件复制/lib目录下,$rsync l /usr/local/lib/*lzo* rootnode1:/lib重新mvn clean package在hadoop 项目中集成hadoop-lzo-master的jar包1. 复制生成的jar包到项目lib下2. cp target/hadoop-lzo-0.4.20-SNAPSHOT.jar /workspace/hadoop2-01/lib/3. 修改代码q) centos上安装和使用 maven:apache-maven-3.3.9-bin.tar.gz到/soft下配置maven的环境变量etc/environmentM2_HOME=/soft/mavenPATH=:/soft/maven/bin配置maven的setting.xml文件,连接到本地仓库服务器。注意:maven安装在centos上 nexus安装在win10上配置maven插件eclipse windows -首选项-maven -user settings - 右侧进行设置:user settings :/soft/maven/conf/settings.xmllocal repository :/home/Ubuntu/.m2/repository完成r) win10安装maven:1. 安装tomcat2. 安装nexus.war文件3. 复制nexus.war到$tomcat_home/webapps/4. 启动tomcat5. http:/localhost:8080/nexus/6. 本地服务器maven的配置tomcat/webapps/nexus/WEB-INF/classes/pertiesnexus-work=E:/maven-repo/nexusruntime=$bundleBasedirnexus-app=$runtime在win10 使用maven1.创建hello-world项目所在的文件夹在hello-world文件夹下创建pom.xml/hello-world/pom.xml 打开pom.xml4.0.0com.it18zhang.heloo-worldheloo-world1.0-SNAPSHOTmaven hello world projectjunitjunit4.11test2.创建文件夹:cd workspace_eclipsehello-world mkdir srcmainjavacomit18zhanghelloworld3.创建HelloWorld.java文件package com.it18zhang.helloworld;public class HelloWorld public static void main(String args)System.out.println(Hello world!);4. 在pom.xml文件所在目录运行:(需要安装maven apache-maven-3.5.0,配置环境变量 D:softwareapache-maven-3.5.0bin 验证:mvn -v )mvn clean compilemvn clean5. 创建测试类包。6. 创建包。s) 文件格式:1. txt 纯文本格式,若干行记录2. SequenceFile key-value /map3. 编写sequence文件代码:public class TestSequenceFile/* * 写入sequenceFile * sequenceFile key-value类似map */Testpublic void write() throws ExceptionConfiguration conf= new Configuration();conf.set(fs.d

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论