设为首页 收藏本站
查看: 740|回复: 0

[经验分享] ma-hadoop集群-配置文件-进程地址端口-和hive hbase关系

[复制链接]

尚未签到

发表于 2016-12-12 09:00:20 | 显示全部楼层 |阅读模式
  0 hadoop 集群:
  集群部署方式: 将map任务等直接运行于要处理的数据所存储的HDFS的数据节点上,
  实现数据处理的本地性,进而大大提高整个过程的完成效率。
  核心进程: 整个集群共有5类运行的核心进程,它们是MapReduce集群的JobTrackerTaskTracker,以及HDFS集群的NameNodeDataNodeSecondaryNameNode
  工作进程: 集群中除了上述5个核心进程之外,还包含许多按需启动的任务类进程(如map任务 reduce任务)
  这些构成了集群的工作进程
  集群规模小于50个节点都属于小规模集群
  小规模下,可以将NameNode与JobTracker合并于同一个节点上运行。
  集群主要包含内容组件: kerberos认证,HDFS文件系统,文件系统的append追加,security、YARN和HDFS联合(HDFS federation),mapreduce;
DSC0000.png
 
  使用集群提供的应用方向:
  推荐系统,金融 分析,自然语言处理,数据挖掘,影响处理,市场预测,日志分析
  1 集群对jdk的要求:
  hadoop基于java开发,依赖jdk,
并且Hadoop的许多功能依赖于Java 6及以后的版本才提供的特性。
http://wiki.apache.org/hadoop/HadoopJavaVersions页面给出了Hadoop目前几大著名企业实现的Hadoop集群中所使用的JDK版本,
无论如何,一个生产环境的Hadoop集群应该运行在64位的操作系统上,JDK等也要使用相应的64位版本,否则,单JVM进程将无法使用大于2GB以上的内存
  总结就是: 安装>=1.6版本的64位jdk
  2  集群多用户的解释:
  在用过 cdh的hadoop集群下,会发现集群有很多用户,比如hbase用户,hbase用户,zookeeper用户,
  hdfs用户,mapreduce用户等,出现这么多用户解释如下:

一个完整的Hadoop集群包含了MapReduce集群和HDFS集群,MapReduce集群包含JobTracker和TaskTracker两类进程和许多按需启动的任务类进程(如map任务,reduce任务),
HDFS集群包含NameNode、SecondaryNameNode和DataNode三类进程。
安全起见,应该以普通用户的身份启动这些进程,并且MapReduce集群的进程与HDFS集群的进程还应该使用不同的用户,
比如分别使用mapred和hdfs用户(cdh就是这么干的)。使用CDH的RPM包安装Hadoop时,这些用户都会被自动创建(还会创建zookeeper,sqoop,hbase等用户),
如果基于tar包安装,则需要手动创建这些用户。

Hadoop的每一个进程都会访问系统的各类资源,然而,Linux系统通过PAM限定了用户的资源访问能力,如可打开的文件数(默认为1024个)及可运行的进程数等,
这此默认配置在一个略具规模的Hadoop集群中均会带来问题。因此,需要为mapred和hdfs用户修改这些限制,这可以在/etc/security/limits.conf中进行。修改结果如下。
# Allow users hdfs, mapred, and hbase to open 32k files. The
# type '-' means both soft and hard limits.
#
# See 'man 5 limits.conf' for details.
# user type resource value
hdfs - nofile 32768
mapred - nofile 32768
  3 集群中 为什么主节点到从节点要ssh免密码登录
  a) 方便主节点快速免密码登录子节点后,远程启动子节点上的hadoop进程
  b) 并执行监控等额外的管理工作。
  4 hadoop分布式模型三类型简介:

Hadoop通常有三种运行模式:本地(独立)模式、伪分布式(Pseudo-distributed)模式和完全分布式(Fully distributed)模式。
安装完成后,Hadoop的默认配置即为本地模式,此时Hadoop使用本地文件系统而非分布式文件系统,而且其也不会启动任何Hadoop守护进程,Map和Reduce任务都作为同一进程的不同部分来执行。因此,本地模式下的Hadoop仅运行于本机。此种模式仅用于开发或调试MapReduce应用程序但却避免了复杂的后续操作。
伪分布式模式下,Hadoop将所有进程运行于同一台主机上,但此时Hadoop将使用分布式文件系统,而且各jobs也是由JobTracker服务管理的独立进程。同时,由于伪分布式的Hadoop集群只有一个节点,因此HDFS的块复制将限制为单个副本,其secondary-master和slave也都将运行于本地主机。此种模式除了并非真正意义的分布式之外,其程序执行逻辑完全类似于完全分布式,因此,常用于开发人员测试程序执行。
要真正发挥Hadoop的威力,就得使用完全分布式模式。由于ZooKeeper实现高可用等依赖于奇数法定数目(an odd-numbered quorum),因此,生产环境中,完全分布式环境需要至少三个节点。
  5 hadoop集群配置文件和作用:
  hadoop-env.sh   定义java配置信息
core-site.xml   定义namenode节点和默认文件系统访问的uri地址,此文件作用于全部进程
hdfs-site.xml   定义hdfs集群属性
mapred-site.xml 定义mapreduce集群属性 主要是指定jobtracker节点
masters: 定义secondarynamenode
slaves: 定义从节点是哪些机器
  每个文件详细说明:
  hadoop-env.sh:
  用于为Hadoop指定运行时使用的JDK、各进程的JDK属性、PID文件及日志文件的保存目录等
  core-site.xml:


  • <?xml version="1.0" encoding="UTF-8"?> 
  • <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> 
  •  
  • <configuration> 
  •   <property> 
  •     <name>hadoop.tmp.dir</name
  •     <value>/hadoop/temp</value> 
  •   </property> 
  •    
  •   <property> 
  •     <name>fs.default.name</name
  •     <value>hdfs://master:9000</value> 
  •   </property>   
  • </configuration> 

  hadoop.tmp.dir: 存放  MAP任务的中间数据 名称空间镜像 和 编辑日志,默认为/tmp/hadoop-${username}
   要保证运行Hadoop进程的用户对其具有全部访问权限。
  fs.default.name: 指定NameNode的RPC服务器监听的地址,默认端口是8020, 定义HDFS的名称节点和其默认的文件系统
  hdfs-site.xml:
  HDFS集群进程有许多属性可以定义其工作路,比如
  dfs.block.size
  <property>
  <name>dfs.block.size</name>
  <value>67108864</value>  64M
  <description>The default block size for new files.</description>
</property>
  dfs.name.dir属性定义的HDFS元数据持久存储路径默认为${hadoop.tmp.dir}/dfs/name
  fs.data.dir属性定义的DataNode用于存储数据块的目录路径默认为${hadoop.tmp.dir}/dfs/data
  fs.checkpoint.dir属性定义的SecondaryNameNode用于存储检查点文件的目录默认为${hadoop.tmp.dir}/dfs/namesecondary
  dfs.replication 定义副本个数
  如下为最简单的写法:


  • <?xml version="1.0" encoding="UTF-8"?> 
  • <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> 
  •  
  • <configuration> 
  •   <property> 
  •     <name>dfs.replication</name
  •     <value>1</value> 
  •   </property> 
  • </configuration> 
  mapred-site.xml:
  其下主要配置参数:
  mapred.job.trakcer:
  JobTracker监听的地址(或主机名)和端口(默认为8021),与前面的fs.default.name属性的值不同的是,
这不是一个URI,而仅一个“主机-端口”组
   
   mapred.local.dir: 用于指定MapReduce作业运行过程中的中间数据,这个目录一定要很大,
默认值为${hadoop.tmp.dir}/mapred/local 
  mapred.job.tracker可以接受多个以逗号分隔路径列表作为其值,并会以轮流的方式将数据分散存储在这些文件系统上,
因此指定位于不同磁盘上的多个文件系统路径可以分散数据I/O
  mapred.system.dir: 各TaskTracker保存共享数据的路径, 默认值为${hadoop.tmp.dir}/mapred/system
  简答写法:


  • <?xml version="1.0"?> 
  • <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> 
  •  
  • <configuration> 
  •   <property> 
  •     <name>mapred.job.tracker</name
  •     <value>master:8021</value> 
  •   </property> 
  • </configuration> 
  上述配置文件下路径的总结:
  {hadoop.tmp.dir} ---> core-site.xml配置,定义了 数据存储节点 mapreduce中间处理数据存放位置  名称节点image edit的路径,如下图:
  
DSC0001.png
  6 启动命令  start-dfs.sh   start-mapred.sh    start-all.sh hadoop-daemon.sh 的区别
  使用这类脚本启动Hadoop集群,其需要当前主机的当前用户能够通过ssh服务以基于密钥认证的方式访问任何一个从节点.
  在NameNode和JobTracker运行于同一主机的场景中时,start-all.sh等效于 start-dfs.sh start-mapred.sh
  hadoop-daemon.sh: 用于集群不停止下,动态增加/删除节点,做法如下

.动态的增加一个hadoop节点  
2.1 配置新节点的环境(eg:机器名 jdk hadoop ssh 机器名和ip对应关系)  
2.2 把新节点的hostname配置到主节点的slaves文件中  
2.3 在新节点,启动进程  
hadoop-daemon.sh start datanode  
hadoop-daemon.sh start tasktracker  
2.4 在主节点执行脚本 hadoop dfsadmin -refreshNodes   通知nomenode(通知老大我来了)
  7 集群进程监听的地址和端口
  Hadoop启动时会运行两个服务器进程,一个为用于Hadoop各进程之间进行通信的RPC服务器,
另一个是提供了便于管理员查看Hadoop集群各进程相关信息页面的HTTP服务器。
  用于定义各RPC服务器所监听的地址和端口的属性有如下几个:
fs.default.name:定义HDFS的NameNode用于提供URI所监听的地址和端口,默认端口为8020;
dfs.datanode.ipc.address:DataNode上RPC服务器监听的地址和端口,默认为0.0.0.0:50020;
  mapred.job.tracker:JobTracker的PRC服务器所监听的地址和端口,默认端口为8021;
mapred.task.tracker.report.address:TaskTracker的RPC服务器监听的地址和端口;TaskTracker的子JVM使用此端口与TaskTracker进行通信,
它仅需要监听在本地回环地址127.0.0.1上,因此可以使用任何端口;只有在当本地没有回环接口时才需要修改此属性的值;
  除了RPC服务器之外,DataNode还会运行一个TCP/IP服务器用于数据块传输,
其监听的地址和端口可以通过dfs.datanode.address属性进行定义,默认为0.0.0.0:50010。
   
  可用于定义各HTTP服务器的属性有如下几个:
mapred.job.tracker.http.addrss:JobTracker的HTTP服务器地址和端口,默认为0.0.0.0:50030;
mapred.task.tracker.http.address:TaskTracker的HTTP服务器地址和端口,默认为0.0.0.0:50060;
dfs.http.address:NameNode的HTTP服务器地址和端口,默认为0.0.0.0:50070;
dfs.datanode.http.address:DataNode的HTTP服务器地址和端口,默认为0.0.0.0:50075;
dfs.secondary.http.address:SecondaryNameNode的HTTP服务器地址和端口,默认为0.0.0.0:50090
  上述端口,感觉如下4个更有用

1 8020     namenode的rpc端口 在core-site.xml设置
2 8021     jobtracker的rpc监听端口 在mapred-site.xml设置
3 50070    namenode的http服务器端口
4 50030    jobtracker的http服务器端口

  8  和hive  hbase  cdh  avro  R mahout 关系
  hadoop 编写map-reduce代码增加了入行门槛
  hive: facebook产品让 mapreduce不在是贵族产品 走向了千家万户,但是依旧不能实时
hive能否修改数据? ----> hdfs不支持修改数据因此hive依旧不支持修改数据
  hive总结一句话: hive是构建在mapreduce上以类SQL方式提供的降低入行大数据的一个工具,不支持修改hdfs文件
  hbase: 可以当然也可以不构建在hdfs上,但是一般他就是设计成构建在hdfs上的
hbase能够在原有的hdfs集群上在安装一个控制节点,同时在每一个hdfs节点上提供一个进程(hbase工作进程)
hbase工作进程是说数据别直接在hdfs上存,而是存在hbase中,hbase决定怎么存在hdfs上,hbase此时就成了hdfs
的客户端,hbase自己知道怎么和hdfs交互,以及把数据存在哪些节点上,更重要的是基于hbase能实现数据的修改。
hbase以类似表的形式让你能够随时插入数据,修改,删除数据,但是hbase不是RDBMS(关系型数据库) 而是稀疏格式的
nosql存储方案,有行的概念,列数不固定,并且多版本,并且不支持事务。
因此有了 hbase之后,hadoop也能支持数据修改了,只不过不是实时的。
如果用到事务,同时是海量数据处理,支持一些简单操作的时候,nosql是非常优良的解决方案。
  hbase总结一句话: hbase是构建在hdfs上的支持动态插入,修改,删除hdfs数据的一套机制,是nosql列数据库
  CDH: cloudear发布的hadoop生态,全称是cloudera distribute include hadoop,
包含三个产品: cdh(集群)  cloudera manager(安装集群和管理集群的界面)  cloudear support(技术支持)
将hadoop作者吸收过去做了股东和技术顾问,并且负责将各个生态
的子版本兼容调制好后整合在一起发布出来, 目前给hadoop社区上给hadoop贡献最多的依旧是Yahoo
  mahout:  hadoop集群的处理结果拿来作为机器智能学习
  R: 工作在hadoop集群上 利用hadoop的处理能力实现数据统计和分析 (统计领域实现编程的基本都在使用)
  avro : 数据序列化系统   hadoop原作者主导开发的一套系统
不能序列化的数据将无法通过网络发送,集群中传送数据,必须是序列化的数据能够发送,到达目的地后能合并回来    avro是hadoop针对google的(protocol buffer 序列反序列功能)所做的的实现。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-313017-1-1.html 上篇帖子: hadoop学习之路_1、自定义序列化类 下篇帖子: 64位操作系统下重新编译hadoop-2.2.0
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表