虚拟机:
桥接模式:可以局域网共享
NAT模式:如果只是自己用的话用这种
学习目标: 使用Hadoop分布式系统(HDFS)来海量存储数据集,通过MapReduce堆这些数据集运行分布式计算 熟悉Hadoop的数据和IO组件,用于压缩、数据集成、序列化和持久处理 熟悉编写MapReduce实际应用时的常见陷阱和高级特性 设计、勾践和管理一个专用的Hadoop集群或在云上运行Hadoop 使用高级查询语言Pig来处理大规模数据 利用Hadoop数据库Hbase保存和处理结构化/半结构化数据 学会ZooKeeper来构建分布式系统 Hadoop是是海量数据(GB,PB)完美解决方案 解决的问题 Hadoop提供一个稳定的共享存储和分析系统,存储由HDFS实现,分析有MapReduce实现 子组件介绍 Avro: 高效跨语言RPC的数据序列系统,持久化数据存储 MapReduce: 分布式数据处理模式和执行环境,运行于大型商用机集群 HDFS:分布式文件系统,运行于大型商用机集群 Pig:一种数据流语言和运行环境,用于检索非常大的数据集。它运行在MapREduce和HDFS上。 Hbase:一个分布式的,列存储数据库。使用HDFS作为底层存储同时支持MapReduce的批量式计算和点查询(随机读取)。 ZooKeeper: 一个分布式高可用性的协调服务。它提供分布式锁之类的基本服务用于构建分布式应用。 Hive:分布式数据仓库。Hive管理HDFS中存储的数据,并提供基于SQL的查询语言用于查询数据。 Chukwa:分布式数据收集和分析系统。它是运行于HDFS中存储数据的收集器。 Hadoop安装流程: 虚拟机安装注意事项见另一个附件: 一、 配置hosts文件(/etc/hosts) 1) 修改主机名称,三台机器分别为 HOSTnAME=slave2,HOSTnAME=slave2, HOSTnAME=master 2) 修改三个机器的host为 (ip 主机名称,下面是我的测试环境) 三个机器的ip 三个机器的主机名称 192.168.102.136 master 192.168.102.135 slave2 192.168.102.128 slave1 二、 建立hadoop运行帐号(专门负责hadoop管理) 在每台机器上都创建一个组,并且创建账号 groupadd hadoop useradd -s /bin/bash -d /home/tony2 -m tony2 -g hadoop 三、 配置ssh免密码连入 单节点设置 hadoop 集群各个节点之间需要进行数据的访问,被访问节点对与访问节点的可靠性进行验证,hadoop通过ssh方法通过 秘钥验证方式远程安全登陆操作,如果每个节点的访问都需要验证太麻烦,所以需要ssh免密码直接登陆被访问节点 1 在master中生成公钥 ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa -t 秘钥类型,有两种RSA和DSA 将生成一个公私钥的目录,这个目录是隐藏的,可以用ls -a 看到 2 将公钥拷贝一份并换成另一个名字 cat id_dsa.pub >> authorized_keys 3 测试本机免密码成功, 需要用ssh登陆两次 ,第一次需要输入密码,第二次不需要输入密码 ssh 机器名(master) (提示输入密码) exit(退出ssh) ssh 用户名(不提示输入密码,直接登陆成功,则测试成功) 4 其余的机器按照上面3个步骤操作即可 则单个机器设置成功。 子节点和主节点设置 为了让主节点(master)能通过SSH免密码登陆两个子节点,两个子节点的公钥必须包含主节点的公钥信息 主要通过在子节点中用scp将主节点公钥拷贝的子节点上 scp介绍:主要可以再两个linux主机间复制文件(远程到本地或本地到远程都可以) 命令格式:scp: [可选参数] file_source file_target (是需要输入密码的) 本地文件拷贝到远程文件: scp local_file remote_username@remote_ip:remote_folder 1 登陆子机器中,拷贝master机器的公钥到到子机器中 scp tony2@master:~/.ssh/id_dsa.pub /home/tony2/.ssh/master_dsa.pub 2 合并公钥 ,将master公钥合并到子机器中去 cat master_dsa.pub >> authorized_keys 注意:authorized_keys 权限必须是600 即 只有当前用户可读写权限,其他用户没有权限的,否则可能不能用。 3 测试master可以免密码登陆slave1和slave2 登陆master机器,执行 ssh slave1 第一次执行需要输入密码,然后exit退出,第二次执行不需要输入密码,配置成功 用同样的方法测试slave2配置是否可以用 则主机与子机器通讯设置成功 四、 下载并解压hadoop安装包 http://mirrors.hust.edu.cn/apache/hadoop/common/ 五、 配置namenode,修改site文件() 1 解压hadoop压缩包 2 配置环境变量(hadoop安装目录): export HADOOP_INSTALL=/web/hadoop-2.2.0 export PATH=$PATH:$HADOOP_INSTALL/bin:$HADOOP_INSTALL/sbin 3 查看hadoop是否生效 source /etc/profile env|grep HADOOP 4 配置hadoop配置文件 Create HDFS directory mkdir -p /web/hadoop-2.2.0/tmp 5 修改 /hadoop/etc/hadoop/core-site.xml (inside <configuration> tag): 主要的localhost需要改成master主机的ip地址 <property> <name>fs.default.name</name> <value>hdfs://192.168.102.136:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/web/hadoop-2.2.0/tmp</value> </property> 6 修改 /hadoop/etc/hadoop/hdfs-site.xml 备份文件的数量 <property> <name>dfs.data.dir</name> <value>/web/hadoop-1.2.1/data</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> 最后两个是创建的dfs目录; 7 修改 /hadoop/etc/hadoop/yarn-site.xml <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> 8 创建mapred-site.xml cp mapred-site.xml.template mapred-site.xml 修改配置:IP地址为主机master的主机地址 <property> <name>mapred.job.tracker</name> <value>192.168.102.136:9001</value> </property> 六、 配置hadoop-env.sh文件 修改jdk的安装目录。 七、 配置masters和slaves文件 修改slaves和masters文件,内部添加子节点和主节点的 “机器名称” Slaves添加的是 slave1 slave2 Masters中添加master(我的主节点名称) 八、 向各节点复制hadoop 例:scp -r hadoop-1.2.1/ root@slave1:/web 九、 格式化namenode(初始化一些文件) bin/hadoop namenode -format 十、 启动hadoop 1. start-all.sh/shutdown-all.sh 下面是个人启动的时候报的错误: 2. 错误记录: 1)原因:hadoop需要更高版本的linux内核,需要换linux或者降低hadoop的版本。 启动报错:Unable to load native-hadoop library for your platform. 调试命令:-bash-3.2# export HADOOP_ROOT_LOGGER=DEBUG,console -bash-3.2# hadoop fs -text /test/data/origz/access.log.gz 出现:GLIBC_2.6' not found (系统glibc版本不够) 解决:1 查看当前系统支持的glibc版本,如果当前版本低,但当前系统支持升级高版本,则可以升级,否则换高版本操作系统 查看支持版本的命令:strings /lib64/libc.so.6 |grep GLIBC_ 查看当前系统glibc版本:rpm -qa | grep glibc 2)be replicated to 0 nodes, instead of 1 原因:因为所有机器的防火墙开启,导致机器之间不能访问 解决:关闭各个机器的防火墙 service iptables stop 3. Cygwin和openssh 可以再windows中模拟linux环境,不是很稳定 十一、 用jps检验各后台进程是否成功启动 1) jps命令查看启动进程: 查看是否成功:执行命令 /web/jdk1.7.0_60/bin/jps(查看与java相关的进程) 会列出下面几个进程:JobTracker,SecondaryNameNode,NameNode,Jps 子节点进程:TaskTracker DataNode Jps 2) hdfs命令导入文件,来测试hdfs是否正常运行 Hadoop 中HDFS测试:创建一个文件夹/root/input 在里面放2个文件,执行文件导入报错 命令: Hadoop dfs –put /root/input in (说明:将目录拷贝到hadoop的in目录中) 查看文件是否导入成功:bin/hadoop dfs -ls ./in/* 问题及解决: http://blog.sina.com.cn/s/blog_67f81bad0101bmn4.html 3)运行hadoop自带的例子: bin/hadoop jar hadoop-examples-1.2.1.jar pi 10 100 bin/hadoop jar hadoop-examples-1.2.1.jar wordcount in out bin/hadoop dfs –ls 查看根目录的所有文件 bin/hadoop dfs -ls ./out 查看out目录中所有文件 bin/hadoop dfs -cat ./out/* 统计一下运算 十二、 通过网站查看集群情况 查看hadoop服务启动情况,IP为Master的IP地址 Jobtracker工作情况: http://192.168.102.136:50030/ namenode工作情况: http://192.168.102.136:50070/ 调整日志级别:http://192.168.102.136:50070/logLevel 很多工具可以对hadoop进行监控 官方文档:http://hadoop.apache.org/docs/r1.2.1/#HDFS 基本组件功能介绍: 日志调试: 从Jobtracker的页面中可以查看打印到控制台的日志:如: System.err.println("系统执行了map方法 "); 到页面中找 Completed Jobs->jobid->map->task->tasklogs->点击就可以看到打印的日志 HDFS基本特性: 硬件错误是常态。因此需要冗余 流式数据访问。即数据批量读取而非随机读写,Hadoop擅长做的是数据分析而不是事务处理 大规模数据集 简单一致性模型。为了降低系统复杂度,对文件采用一次性写多次读的逻辑设计,即是文件一经写入,关闭,就再也不能修改 程序采用“数据就近”原则分配节点执行 Namenode作用: 管理文件系统的命名空间 记录每个文件数据块在各个Datanode上的位置和副本信息 协调客户端对文件的访问 记录命名空间内的改动或空间本身属性的改动 Namenode使用事务日志记录HDFS元数据的变化。使用映像文件存储文件系统的命名空间,包括文件映射,文件属性等 DataNode作用: 负责所在物理节点的存储管理 一次写入,多次读取(不修改) 文件由数据块组成,典型的块大小是64MB 数据块尽量散布道各个节点 读取数据流程: 客户端要访问HDFS中的一个文件 首先从namenode获得组成这个文件的数据块位置列表 根据列表知道存储数据块的datanode 访问datanode获取数据 Namenode并不参与数据实际传输 HDFS的可靠性: 冗余副本策略 机架策略:不同机架进行冗余 心跳机制:数据校验、数据块多少校验等 安全模式:可以确保数据有足够的冗余 使用文件块的校验和 Checksum来检查文件的完整性 回收站:文件删除后可以自动删除 元数据保护: 快照机制:快速返回某个时间点的数据状态 HDFS命令示例: hadoop fs -mkdir /user/trunk hadoop fs -ls /user hadoop fs -lsr /user (递归的) hadoop fs -put test.txt /user/trunk hadoop fs -put test.txt . (复制到hdfs当前目录下,首先要创建当前目录) hadoop fs -get /user/trunk/test.txt . (复制到本地当前目录下) hadoop fs -cat /user/trunk/test.txt hadoop fs -tail /user/trunk/test.txt (查看最后1000字节) hadoop fs -rm /user/trunk/test.txt hadoop fs -help ls (查看ls命令的帮助文档) dfsadmin –safemode enter 进入hadoop的安全模式 dfsadmin –safemode leave 退出安全模式 MapReduce学习 Mapreduce运行机制图: Input -> map -> shuffle -> reduce ->output 运行机制: 1. 客户端(client):编写mapreduce程序,配置作业,提交作业,这就是程序员完成的工作; 2. JobTracker:初始化作业,分配作业,与TaskTracker通信,协调整个作业的执行; 3. TaskTracker:保持与JobTracker的通信,在分配的数据片段上执行Map或Reduce任务,TaskTracker和JobTracker的不同有个很重要的方面,就是在执行任务时候TaskTracker可以有n多个,JobTracker则只会有一个(JobTracker只能有一个就和hdfs里namenode一样存在单点故障,我会在后面的mapreduce的相关问题里讲到这个问题的) 4. Hdfs:保存作业的数据、配置信息等等,最后的结果也是保存在hdfs上面 MapReduce性能调优: 1 调整reducer个数 2 大文件优于小文件 3 减少网络输出,压缩map的输出(之传送有用的) 4 调度机制: 1. 缺省为先入先出作业调度 2. 支持公平调度器和容量调度器 任务执行优化: 1. 推测式执行,这个方式默认是打开的,可以再配置文件(mapred-site.xml)中设置关闭 2. 可以重用JVM即单个JVM中可以执行的任务数量,可以提高效率(mapred-site.xml设置)。 3. 忽略模式:任务失败2次后,会把失败位置告诉jobTracker,jobtracker会重启这个任务,并且跳过上次执行失败的位置。(默认关闭) 错误处理机制: 硬件故障 Jobtracker是单点,需要找比较好的机器做这个节点。 Jobtracker通过心跳信号了解tasktracker是否发生故障,如果故障则会移除tasktracker任务。 如果故障节点在执行map任务并且尚未完成,则jobtracker会要求其他节点重新执行map任务。 如果故障节点在执行reduce任务尚未完成,jobtracker会要求其他节点继续执行reduce任务。 任务失败 1. 由于代码缺陷或进程崩溃引起任务失败 2. Jvm自动退出,向tasktracker父进程发送错误信息,并且错误信息会写到日志中 3. Tasktracker坚挺程序会发现进程退出,或进程很久没有信息送回,任务标记失败 4. 标记失败后,通过心跳告诉jobtracker任务失败 5. Jobtrack获悉任务失败后,将把任务重新放入调度队列重新分配在执行 6. 如果任务失败次数超过4(配置文件中设置),将不会再被执行,同时宣布作业失败 Mapreduce开发学习: 1 elipse 插件下载安装与使用,可以看安装文档 http://pan.baidu.com/share/link?shareid=2552850400&uk=2399653584 2 mapReduce开发与运行(开发完的程序必须打包成jar文件,然后在服务器上运行,elipse运行没有成功) 定义:一种用于数据处理的编程模型。 18 页面 Hadoop 完全分布式一些技巧 一、 Hadoop大集群实施 a) 设备选型(普通的pc机就可以了,但最多使用多个硬盘) b) 是否使用虚拟机(资源允许的话可以,最好不要用一个硬盘) c) Host维护,在急群中用DNS解析域名来查找响应的ip,例如:linux中的bind服务 d) 解决免密码登陆设置的繁琐:可以用NFS处理 e) 解决scp文件发送命令问题。 用awk解析slave文件生成scp文件脚本 ,chmod a+x 文件名 ,将文件变成可执行脚本 云计算理解 云计算是服务模式:不是新技术,不是某一种软件,是一些关键技术日趋成熟后催生的一种新的服务模式 云计算是集中拥有:使用户能得到其本身无法得到的服务,降低拥有成本是云计算核心价值之一。 好处:提高软硬件使用率、集中管理降低能耗、节约维护人员费用。 风险:安全性风险,可用性风险,绑架风险 云计算形态 私有云(公司内部用),公有云(搜索,网盘),混合云 云计算解决方案: Hadoop,Openstack 1. 基于Hadoop的日志分析项目的一些问题,可以分析出工程中:访问用户IP ,用户所在城市 ,访问时间 , 访问量怎么样 2. 离线日志分析,不适合做在线处理 3. 当传统方法解决不了,能处理足够大的数据,管理成本低,机器成本低 Hadoop解决方案(运维,写map-reduce和修改源代码,数据仓储) 1. 数据定时从收集服务器装在到Hadoop集群 2. 数据经过整理后放到数据仓库系统,数据仓库是基于Hive架构的(选用原因:支持sql语句复杂sql可能不支持,可以用Java写自定义函数), 3. 数据仓库查询系统结果被导入hbase中 4. 通过API进行连接展现 5. 对于权限需要看源代码,自己加上。
Mapreduce 几个优化配置参数的了解
1 mapred.reduce.parallel.copies 复制map阶段产生的数据到reduce节点的线程数据,默认5个 2 mapred.compress.map.output map产生的数据写入磁盘前是否压缩:true 压缩 false不压缩 3 mapred.map.output.compression.codec 上面的压缩用的压缩库设置 4 io.sort.mb map任务缓冲区大小设置:map任务产生的数据会放到缓冲区,大于这个缓冲区会将数据写到磁盘中, 5 io.sort.spill.percent 缓冲区内存达到多少的时候,数据会开始溢写到磁盘 6 mapred.local.dir 上面,溢写内容到磁盘的什么位置
相关推荐
Hadoop可以与Eclipse集成,以便于项目的开发和调试。首先,需要下载Eclipse,然后安装Hadoop插件。按照http://www.powerxing.com/hadoop-build-project-using-eclipse/的教程可以完成Hadoop插件的安装。在安装过程中...
标题《hadoop的安装》所涉及的知识点涵盖Hadoop安装过程中的各个方面,包括但不限于JDK环境的配置与安装、Hadoop下载、解压、配置以及启动等步骤。以下是根据给定内容和描述生成的详细知识点: 1. JDK环境配置与...
以上总结的知识点均来自给定文件的内容,涵盖了Hadoop的学习资料、版本历史、生态圈、安装、HDFS、MapReduce、Zookeeper、HBase、Hive、Storm以及数据挖掘和推荐系统等多个方面,为学习和使用Hadoop提供了全面的理论...
虚拟机技术为Hadoop的安装与测试提供了稳定的运行环境,有助于提高学习效率与资源利用率。 ### 二、Linux常用命令及操作 #### 常用命令介绍 - **打开终端**:使用快捷键`Ctrl+Alt+T`快速打开终端。 - **创建用户*...
在本教程中,我们学习了 Hadoop 的三种安装方式,包括单机模式、伪分布式模式和分布式模式,每种模式都有其特点和应用场景。同时,我们还学习了安装 SSH 服务器、配置 SSH 无密码登录、安装 JDK 和安装 Hadoop 的...
Hadoop 安装 学习 入门教程 Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, Chukwa,新增加的项目包括,YARN, Hcatalog, Oozie, ...
《Python+Spark 2.0+Hadoop机器学习与大数据》是一本深入探讨大数据处理与机器学习技术结合的著作。作者林大贵以其丰富的经验,详细介绍了如何利用Python、Spark 2.0以及Hadoop这一组合来构建高效的数据分析解决方案...
在安装过程中,我们会遇到各种问题,但通过学习和实践,我们可以克服这些困难,从而深入理解Hadoop及其依赖环境。 首先,安装Hadoop的第一步是创建一个专门的用户账户。在本例中,创建了一个名为"hadoop"的用户,这...
8. Hadoop完全分布式安装的应用场景:Hadoop完全分布式安装可以应用于多种场景,例如大数据处理、数据分析、机器学习、人工智能等领域。 9. Hadoop完全分布式安装的挑战:Hadoop完全分布式安装也存在一些挑战,例如...
Hadoop集群安装笔记是一篇详细的安装指南,旨在帮助新手快速搭建Hadoop学习环境。以下是该笔记中的重要知识点: Hadoop集群安装目录 在安装Hadoop集群之前,需要准备好安装环境。安装环境包括Java Development Kit...
**Hadoop学习笔记详解** Hadoop是一个开源的分布式计算框架,由Apache基金会开发,主要用于处理和存储海量数据。它的核心组件包括HDFS(Hadoop Distributed File System)和MapReduce,两者构成了大数据处理的基础...
在Windows环境下,由于系统架构与Linux有所不同,因此需要一些特定的依赖文件来确保Hadoop能够正常运行。这个压缩包中包含了这些关键文件,主要涉及以下几个方面: 1. **WinUtils**: `winutils.exe`是Hadoop在...
- **Linux安装及基本操作**:这是Hadoop学习的基础,包括Linux系统的安装、常用的命令行操作(如文件管理、进程管理等)。熟悉Linux环境对于后续的学习至关重要。 - **Python编程基础**:虽然Hadoop的主要编程语言是...
通过本实验的学习和实践,我们不仅掌握了Hadoop的基本原理和关键技术,还能够独立完成Hadoop集群的安装与配置。这对于进一步探索大数据领域的其他技术和应用具有重要意义。未来,随着数据量的持续增长和技术的不断...
【标题】:“Hadoop学习整理的文档” 【文档概述】: Hadoop是Apache软件基金会开发的一个开源分布式计算框架,主要用于处理和存储大规模数据。这个文档集合可能是针对Hadoop初学者或者希望深入理解Hadoop生态系统...