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

[经验分享] 第一章:小朱笔记hadoop之环境配置以及集群部署-集群环境配置

[复制链接]
发表于 2016-12-11 11:37:01 | 显示全部楼层 |阅读模式
第一章:小朱笔记hadoop之环境配置以及集群部署

第一节.集群环境配置

(1)hadoop部署注意项
(a)hadoop各节点的分布:namenode和jobtracker部署:namenode与jobtracker分离.tasktracker与datanode配对.
(b)Trash:  hadoop回收站功能默认是禁止的,删除文件,就是直接删除了,所以要记得配置好trash。当rm后,它会move到当前文件夹下的.Trash目录下,误删文件后,可以恢复文件。参考配置属性fs.trash.interval。
(c)map和reduce任务的JVM选项:mapred.child.java.opts配置map和reduce子进程的JVM属性,如果内存充裕,可以改为 -Xmx2400m.
(d)Tasktracker的map和reducer数量配置: 属性mapred.tasktracker.map.tasks.maximum配置这个tasktracker同时可以最多跑多少个map task,要根据tracker的内存和磁盘情况规划。还有属性mapred.tasktracker.reduce.tasks.maximum配置这个tasktracker同时可以最多跑多少个reduce task.同理也是要根据tracker的内存和磁盘情况规划。例如8核的机器,8个map和8个reducer。map中间结果开启压缩操作(尤其是snappy和LZO)的时候,cpu的负载会比较高,map和reducer的数量可以根据自己的业务情况灵活调节。
(e)缓冲区大小:io.file.buffer.size默认是4KB,作为hadoop缓冲区,用于hadoop读hdfs的文件和写hdfs的文件,还有map的输出都用到了这个缓冲区容量,对于现在的硬件很保守,可以设置为128k(131072),甚至是1M(太大了map和reduce任务可能会内存溢出)。
 
(2)hadoop配置文件说明

写道

dfs.hosts:记录即将作为datanode加入集群的机器列表
mapred.hosts :记录即将作为tasktracker加入集群的机器列表
dfs.hosts.exclude mapred.hosts.exclude: 分别包含待移除的机器列表
master:记录运行辅助namenode的机器列表
slave:记录运行datanode和tasktracker的机器列表
hadoop-env.sh:记录脚本要用的环境变量,以运行hadoop
core-site.xml:hadoop core的配置项,例如hdfs和mapreduce常用的i/o设置等
hdfs-site.xml: hadoop守护进程的配置项,包括namenode、辅助namenode和datanode等
mapred-site.xml: mapreduce守护进程的配置项,包括jobtracker和tasktracker
hadoop-metrics.properties: 控制metrics在hadoop上如何发布的属性
log4j.properties: 系统日志文件、namenode审计日志、tasktracker子进程的任务日志的属性



(3)hadoop集群配置步骤
   采用4台安装Linux环境的机器来构建一个小规模的分布式集群,hadoop采用官网hadoop-1.0.3
 
第一步:4台机器建立统一的用户hadoop 注意:一定要建立相同的用户名,ssh需要无密码登录
 
第二步:安装jdk

    下载jdk,安装并配置环境变量
    修改/etc/profile:

#jdk配置
JAVA_HOME=/opt/java
JRE_HOME=/opt/java/jre
CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$HOME/bin
export JAVA_HOME JRE_HOME CLASSPATH PATH
  保存,并执行source /etc/profile
 
第三步:配置host

/etc/hosts 这个文件是用来配置主机将用的DNS服务器信息,是记载LAN内接续的各主机的对应[HostName和IP]用的。当用户在进行网络连接时,首先查找该文件,寻找对应主机名(或域名)对应的IP地址。
我们要测试两台机器之间知否连通,一般用"ping 机器的IP",如果想用"ping 机器的主机名"发现找不见该名称的机器,解决的办法就是修改"/etc/hosts"这个文件,通过把LAN内的各主机的IP地址和HostName的一一对应写入这个文件的时候,就可以解决问题。
修改/etc/hosts ,保证100、101、102、103 四台机器 hosts文件相同
192.168.1.100    master 
192.168.1.101    slaveA 
192.168.1.102    slaveB
192.168.1.103    slaveC
 
第四步:SSH无密码验证配置
      Hadoop运行过程中需要管理远端Hadoop守护进程,在Hadoop启动以后,NameNode是通过SSH(Secure Shell)来启动和停止各个DataNode上的各种守护进程的。这就必须在节点之间执行指令的时候是不需要输入密码的形式,故我们需要配置SSH运用无密码公钥认证的形式,这样NameNode使用SSH无密码登录并启动DataName进程,同样原理,DataNode上也能使用SSH无密码登录到NameNode。如果只是通过master控制集群的话,就不必配置slave访问master的无密码登录了。
SSH无密码原理
  Master(NameNode | JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Salve(DataNode | Tasktracker)上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Slave上。当Master通过SSH连接Salve时,Salve就会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Slave,Slave确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端Master复制到Slave上。
master机器:

写道

hadoop@master:ssh-keygen -t rsa
hadoop@master:ssh-add ~/.ssh/id_rsa
hadoop@master:cp ~/.ssh/id_rsa.pub authorized_keys
hadoop@master:cd .ssh
hadoop@master:~/.ssh# chmod 600 authorized_keys

 
slave机器:

写道

hadoop@slaveA:mkdir .ssh
hadoop@slaveB:mkdir .ssh
hadoop@slaveC:mkdir .ssh

 
master机器:
 

写道

hadoop@master:scp ~/.ssh/authorized_keys slaveA:~/.ssh/
hadoop@master:scp ~/.ssh/authorized_keys slaveB:~/.ssh/
hadoop@master:scp ~/.ssh/authorized_keys slaveC:~/.ssh/

 
第五步:配置hadoop环境
(1)修改/etc/profile:
 

#hadoop配置
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin

 
(2)配置hadoop-env.sh
 

# set java environment
export JAVA_HOME=/opt/java
(3)配置core-site.xml文件
 

       <property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
<description>
NameNode的URI路径,格式:hdfs://主机名:端口/
</description>
</property>
<property>
<name>fs.checkpoint.period</name>
<value>3600</value>
<description>
进行checkpoint的周期时间间隔,单位:秒
</description>
</property>
<property>
<name>fs.checkpoint.size</name>
<value>67108864</value>
<description>
日志文件达到这个上限值时,将进行一次强制checkpoint操作,单位:byte   
</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/var/tmp</value>
<description>
Hadoop的默认临时路径,这个最好配置,如果在新增节点或者其他情况下莫名其妙的DataNode启动不了,
就删除此文件中的tmp目录即可。不过如果删除了NameNode机器的此目录,那么就需要重新执行NameNode格式化的命令。
/hadoopRun/tmp这里给的路径不需要创建会自动生成。
</description>
</property>
<property>
<name>fs.trash.interval</name>
<value>1</value>
<description>Number of minutes between trash checkpoints.回收站一定要配置的,不然后果很可怕。
If zero, the trash feature is disabled.
</description>
</property>
 
(4)配置hdfs-site.xml文件
 

     <property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/opt/hadoop/var/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/opt/hadoop/var/hdfs/data</value>
</property>
<property>
  <name>dfs.hosts.exclude</name>
  <value>/opt/hadoop/conf/excludes</value>
  <description>Names a file that contains a list of hosts that are  
  not permitted to connect to the namenode.  The full pathname of the  
  file must be specified.  If the value is empty, no hosts are  
  excluded.</description>
</property>
 
   (5)配置mapred-site.xml文件

        <property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/opt/hadoop/var/mapred</value>
</property>
 
  (6)修改conf/masters
   

写道

master

 
  (7)修改conf/slaves
  

slavesA
slavesB
slavesC
 
第六步:分发hadoop到所有节点
     将配置好的hadoop拷贝到所有的datanode
 

写道

scp -r /opt/hadoop/ slavesA:/opt/
scp -r /opt/hadoop/ slavesB:/opt/
scp -r /opt/hadoop/ slavesC:/opt/

 
 
第七步:格式化hdfs文件系统的namenode


写道

hadoop namenode -format

 
生产环境都是根据自己的数据类型、集群配置进行定制,这里只是一个简单的demo配置。
生产环境辅助配置以及一些注意事项:
1、配置分发脚本file-dispatcher.sh(简单的分发配置脚本,稍后我会分享供同学们下载)
a、将该脚本放置到hadoop/bin 目录下
b、建立hadoop/conf/configs文件,列入需要分发的配置文件名称。
运行脚本则会自动分发配置到slaves主机的hadoop/conf目录

 
 
 
 
 
 

运维网声明 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-312777-1-1.html 上篇帖子: hadoop web中查看文件内容乱码解决 下篇帖子: Hadoop、Spark、HBase与Redis的适用性讨论
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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