转:Hadoop学习与安装

2024-06-23 18:48
文章标签 hadoop 安装 学习

本文主要是介绍转:Hadoop学习与安装,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

学习目标:
    使用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_keys3 测试本机免密码成功,   需要用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  
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.0export PATH=$PATH:$HADOOP_INSTALL/bin:$HADOOP_INSTALL/sbin3 查看hadoop是否生效source /etc/profileenv|grep HADOOP4 配置hadoop配置文件Create HDFS directorymkdir -p /web/hadoop-2.2.0/tmp5 修改 /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.xmlcp  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  slave2Masters中添加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 glibc2)be replicated to 0 nodes, instead of 1
原因:因为所有机器的防火墙开启,导致机器之间不能访问
解决:关闭各个机器的防火墙 service iptables stop3.    Cygwin和openssh 可以再windows中模拟linux环境,不是很稳定
十一、      用jps检验各后台进程是否成功启动1)    jps命令查看启动进程:
查看是否成功:执行命令 /web/jdk1.7.0_60/bin/jps(查看与java相关的进程)
会列出下面几个进程:JobTracker,SecondaryNameNode,NameNode,Jps    
子节点进程:TaskTracker  DataNode Jps2)    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.html3)运行hadoop自带的例子:
bin/hadoop jar hadoop-examples-1.2.1.jar pi 10 100
bin/hadoop jar hadoop-examples-1.2.1.jar wordcount in outbin/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
基本组件功能介绍:HDFS基本特性:
    硬件错误是常态。因此需要冗余
    流式数据访问。即数据批量读取而非随机读写,Hadoop擅长做的是数据分析而不是事务处理
    大规模数据集
    简单一致性模型。为了降低系统复杂度,对文件采用一次性写多次读的逻辑设计,即是文件一经写入,关闭,就再也不能修改
    程序采用“数据就近”原则分配节点执行Namenode作用:
    管理文件系统的命名空间
    记录每个文件数据块在各个Datanode上的位置和副本信息
    协调客户端对文件的访问
    记录命名空间内的改动或空间本身属性的改动
    Namenode使用事务日志记录HDFS元数据的变化。使用映像文件存储文件系统的命名空间,包括文件映射,文件属性等DataNode作用:
    负责所在物理节点的存储管理
    一次写入,多次读取(不修改)
    文件由数据块组成,典型的块大小是64MB
    数据块尽量散布道各个节点
读取数据流程:
    客户端要访问HDFS中的一个文件
    首先从namenode获得组成这个文件的数据块位置列表
    根据列表知道存储数据块的datanode
    访问datanode获取数据
    Namenode并不参与数据实际传输
HDFS的可靠性:    冗余副本策略
    机架策略:不同机架进行冗余
    心跳机制:数据校验、数据块多少校验等
    安全模式:可以确保数据有足够的冗余
    使用文件块的校验和 Checksum来检查文件的完整性
    回收站:文件删除后可以自动删除
    元数据保护:
    快照机制:快速返回某个时间点的数据状态
HDFS命令示例:
<span style="color: #ff0000;">    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的安全模式</span>
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=23996535842 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,Openstack1.    基于Hadoop的日志分析项目的一些问题,可以分析出工程中:访问用户IP ,用户所在城市 ,访问时间 , 访问量怎么样
2.    离线日志分析,不适合做在线处理
3.    当传统方法解决不了,能处理足够大的数据,管理成本低,机器成本低Hadoop解决方案(运维,写map-reduce和修改源代码,数据仓储)
1.    数据定时从收集服务器装在到Hadoop集群
2.    数据经过整理后放到数据仓库系统,数据仓库是基于Hive架构的(选用原因:支持sql语句复杂sql可能不支持,可以用Java写自定义函数),
3.    数据仓库查询系统结果被导入hbase中
4.    通过API进行连接展现
5.    对于权限需要看源代码,自己加上。
转自:http://username2.iteye.com/blog/2106532

这篇关于转:Hadoop学习与安装的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1087980

相关文章

ESP32 esp-idf esp-adf环境安装及.a库创建与编译

简介 ESP32 功能丰富的 Wi-Fi & 蓝牙 MCU, 适用于多样的物联网应用。使用freertos操作系统。 ESP-IDF 官方物联网开发框架。 ESP-ADF 官方音频开发框架。 文档参照 https://espressif-docs.readthedocs-hosted.com/projects/esp-adf/zh-cn/latest/get-started/index

51单片机学习记录———定时器

文章目录 前言一、定时器介绍二、STC89C52定时器资源三、定时器框图四、定时器模式五、定时器相关寄存器六、定时器练习 前言 一个学习嵌入式的小白~ 有问题评论区或私信指出~ 提示:以下是本篇文章正文内容,下面案例可供参考 一、定时器介绍 定时器介绍:51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成。 定时器作用: 1.用于计数系统,可

问题:第一次世界大战的起止时间是 #其他#学习方法#微信

问题:第一次世界大战的起止时间是 A.1913 ~1918 年 B.1913 ~1918 年 C.1914 ~1918 年 D.1914 ~1919 年 参考答案如图所示

[word] word设置上标快捷键 #学习方法#其他#媒体

word设置上标快捷键 办公中,少不了使用word,这个是大家必备的软件,今天给大家分享word设置上标快捷键,希望在办公中能帮到您! 1、添加上标 在录入一些公式,或者是化学产品时,需要添加上标内容,按下快捷键Ctrl+shift++就能将需要的内容设置为上标符号。 word设置上标快捷键的方法就是以上内容了,需要的小伙伴都可以试一试呢!

Linux 安装、配置Tomcat 的HTTPS

Linux 安装 、配置Tomcat的HTTPS 安装Tomcat 这里选择的是 tomcat 10.X ,需要Java 11及更高版本 Binary Distributions ->Core->选择 tar.gz包 下载、上传到内网服务器 /opt 目录tar -xzf 解压将解压的根目录改名为 tomat-10 并移动到 /opt 下, 形成个人习惯的路径 /opt/tomcat-10

AssetBundle学习笔记

AssetBundle是unity自定义的资源格式,通过调用引擎的资源打包接口对资源进行打包成.assetbundle格式的资源包。本文介绍了AssetBundle的生成,使用,加载,卸载以及Unity资源更新的一个基本步骤。 目录 1.定义: 2.AssetBundle的生成: 1)设置AssetBundle包的属性——通过编辑器界面 补充:分组策略 2)调用引擎接口API

Javascript高级程序设计(第四版)--学习记录之变量、内存

原始值与引用值 原始值:简单的数据即基础数据类型,按值访问。 引用值:由多个值构成的对象即复杂数据类型,按引用访问。 动态属性 对于引用值而言,可以随时添加、修改和删除其属性和方法。 let person = new Object();person.name = 'Jason';person.age = 42;console.log(person.name,person.age);//'J

大学湖北中医药大学法医学试题及答案,分享几个实用搜题和学习工具 #微信#学习方法#职场发展

今天分享拥有拍照搜题、文字搜题、语音搜题、多重搜题等搜题模式,可以快速查找问题解析,加深对题目答案的理解。 1.快练题 这是一个网站 找题的网站海量题库,在线搜题,快速刷题~为您提供百万优质题库,直接搜索题库名称,支持多种刷题模式:顺序练习、语音听题、本地搜题、顺序阅读、模拟考试、组卷考试、赶快下载吧! 2.彩虹搜题 这是个老公众号了 支持手写输入,截图搜题,详细步骤,解题必备

VMware9.0详细安装

双击VMware-workstation-full-9.0.0-812388.exe文件: 直接点Next; 这里,我选择了Typical(标准安装)。 因为服务器上只要C盘,所以我选择安装在C盘下的vmware文件夹下面,然后点击Next; 这里我把√取消了,每次启动不检查更新。然后Next; 点击Next; 创建快捷方式等,点击Next; 继续Cont

vcpkg安装opencv中的特殊问题记录(无法找到opencv_corexd.dll)

我是按照网上的vcpkg安装opencv方法进行的(比如这篇:从0开始在visual studio上安装opencv(超详细,针对小白)),但是中间出现了一些别人没有遇到的问题,虽然原因没有找到,但是本人给出一些暂时的解决办法: 问题1: 我在安装库命令行使用的是 .\vcpkg.exe install opencv 我的电脑是x64,vcpkg在这条命令后默认下载的也是opencv2:x6