第一章:小朱笔记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配置文件说明
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-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@slaveB:mkdir .ssh
hadoop@slaveC:mkdir .ssh
master机器:
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
(7)修改conf/slaves
slavesA slavesB slavesC
第六步:分发hadoop到所有节点
将配置好的hadoop拷贝到所有的datanode
scp -r /opt/hadoop/ slavesB:/opt/
scp -r /opt/hadoop/ slavesC:/opt/
第七步:格式化hdfs文件系统的namenode
生产环境都是根据自己的数据类型、集群配置进行定制,这里只是一个简单的demo配置。
生产环境辅助配置以及一些注意事项:
1、配置分发脚本file-dispatcher.sh(简单的分发配置脚本,稍后我会分享供同学们下载)
a、将该脚本放置到hadoop/bin 目录下
b、建立hadoop/conf/configs文件,列入需要分发的配置文件名称。
运行脚本则会自动分发配置到slaves主机的hadoop/conf目录
相关推荐
资源名称:云计算Hadoop:快速部署Hadoop集群内容简介: 近来云计算越来越热门了,云计算已经被看作IT业的新趋势。云计算可以粗略地定义为使用自己环境之外的某一服务提供的可伸缩计算资源,并按使用量付费。可以...
计算Hadoop:快速部署Hadoop集群 详细的Hadoop集群部署文档,对您绝对有用~
hadoop-common-2.2.0-bin-master(包含windows端开发Hadoop和Spark需要的winutils.exe),Windows下IDEA开发Hadoop和Spark程序会报错,原因是因为如果本机操作系统是windows,在程序中使用了hadoop相关的东西,比如写入...
flink整合Hadoop,注意:以 Yarn 模式部署 Flink 任务时,要求 Flink 是有 Hadoop 支持的版本,Hadoop 环境需要保证版本在 2.2 以上,并且集群中安装有 HDFS 服务。
windows下 eclipse操作hadoop集群 插件
hadoop-common-2.2.0-bin-master(包含windows端开发Hadoop2.2需要的winutils.exe)
Hadoop实战高手之路---从零开始”的第六讲Hadoop图文训练课程:使用HDFS命令行工具操作Hadoop分布式集群初体验
HadoopHA高可用集群配置 hdfs-site.xml
hadoop-common-2.7.3-bin-master 包含hadoop.dll、winutils.exe,下载后解压,配置HADOOP_HOME环境变量
hadoop2.6(支持2.x)windows本地开发测试类库(包含winutils.exe),直接解压目录配置到环境变量就可以使用。完美解决hadoop binary path问题。
HadoopHA高可用集群配置 core-site.xml
YARN的ResourceManager也存在单点故障问题,这个问题在hadoop-2.4.1得到了解决:有两个ResourceManager,一个是Active,一个是Standby,状态由zookeeper进行协调。 YARN框架下的MapReduce可以开启JobHistoryServer来...
Hadoop Eclipse是Hadoop开发环境的插件,用户在创建Hadoop程序时,Eclipse插件会自动导入Hadoop编程接口的jar文件,这样用户就可以在Eclipse插件的图形界面中进行编码、调试和运行Hadop程序,也能通过Eclipse插件...
hadoop环境配置(单机集群),图文并茂
第6讲:eclipse与Hadoop集群连接
在windows环境下开发hadoop时,需要配置HADOOP_HOME环境变量,变量值D:\hadoop-common-2.7.3-bin-master,并在Path追加%HADOOP_HOME%\bin,有可能出现如下错误: org.apache.hadoop.io.nativeio.NativeIO$Windows....
当在windows开发hadoop时,需要配置HADOOP_HOME环境变量,变量值D:\Program Files\hadoop-common-2.7.3-bin-master,出现如下错误之一,需要配置: 1、org.apache.hadoop.io.nativeio.NativeIO$Windows....
Hadoop-3.2.0基础讲义-单点集群部署-(windows,linux).docx
Hadoop权威指南----读书笔记