内容发布更新时间 : 2024/12/25 1:45:17星期一 下面是文章的全部内容请认真阅读。
集群的构建和安装:
Apache Hadoop分发包安装Hadoop。
需要添加到安装脚本之中的内容: 安装Java
检查Java是否已被正确安装。 % java -version
创建Hadoop用户:
创建特定的Hadoop用户账号以区分Hadoop和本机上的其他服务。
(在新用户的home目录设在一个NFS挂载的驱动器上,辅助SSH秘钥分布。NFS服务器在Hadoop集群之外,如果用户选择使用NFS,则有必要考虑autofs
,它提供按需挂载NFS文件系统的功能,即系统访问它时才挂载。autofs也提供一些措施来应对NFS服务器发生故障的情况)
安装Hadoop
Hadoop并没有安装在hadoop用户的home目录下,最啊哦是在某一NFS挂载的目录上
cd /usr/local
sudo tar xzf hadoop-x.y.z.tar.gz
将Hadoop文件的拥有者改为hadoop用户和组 sudo chown -R hadoop:hadoop hadoop-x.y.z
SSH配置
SSH运行hadoop用户无需键入密码即可登录集群内的机器。最简单的方法是创建一个公钥/私钥对,利用NFS在整个集群间共享该秘钥对。
以某hadoop用户账号登录后,键入一下指令来产生一个RSA密钥对。 %ssh-keygen -t rsa -f ~/.ssh/id_rsa
为了安全,当系统提示输入口令时,用户最好指定一个口令,可以使用ssh-agent避免为每个连接一一输入密码。
私钥放在由-f选项指定的文件中,例如~/.ssh/id_rsa.pub。存放公钥的文件名称与私钥类似,但是以\作为后缀,例如~~/.ssh/id_rsa.pub。
接下来,需要确保公钥存放在用户打算连接的所有机器的~/.ssh/authorized_keys文件中。如果hadoop用户的home目录在NFS文系统中,则密钥 可以通过键入一下指令在整个集群共享:
êt ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
如果home目录并非通过NFS共享,则需要利用其它方法共享公钥。测试是否可以从主机器ssh到工作机器。若可以,则表明ssh-agent正在运行。再运行
ssh-add来存储口令。这样的话,用户即可不输入口令就能ssh到一台工作机器。
Hadoop配置 Hadoop配置文件
hadoop-env.sh Bash脚本 记录脚本要用的环境变量,以运行hadoop core-site.xml Hadoop配置XML Hadoop Core的配置项,例如HDFS和MapReduce常用的I/O设置等
hdfs-site.xml Hadoop配置XML Hadoop守护进程的配置项,包括namenode、辅助namenode和datanode等
mapred-site.xml Hadoop配置XML MapReduce守护进程的配置项,包括jobtracker和tasktracker
masters 纯文本 运行辅助namenode的机器列表(每行一个) slaves 纯文本 运行datanode和tasktracker的机器列表(mei) hadoop-metrics.properties java属性 控制metrics在Hadoop上如何发布的属性
log4j.properties java属性 系统日志文件、namenode审计日志、tasktracker子进程的任务日志的属性。
-----------------------------------------------------------------------------------------------------------------
上述文件都放在Hadoop分发包的conf目录中。配置目录页可重新放在文件系统的其他地方。但守护进程启动时需要使用--config选项, 以指向本地文件系统的某个目录。 配置管理
集群的Hadoop节点都各自保存在一系列配置文件,并由管理员完成这些配置的同步工作。Hadoop提供一个基本工具来进行同步配置,即rsync。此外 ,诸如dsh或pdsh等并行shell工具也可完成该任务。
Hadoop支持为所有主机器和工作机器采用同一套配置文件。
------------------------------------------------------------------------------------------------------------------- 控制脚本
Hadoop内置一些脚本来运行指令,在集群内启动和终止守护进程。为了运行这些脚本,需要指定集群内的所有机器。有两个文件能达成这个目标(存放在bin
目录中),还需要指定集群内的所有机器。有两个文件能达成这个目标,即masters和slaves。各文件逐行记录一些机器的名称或IP地址。
masters主要记录拟运辅助namenode的所有机器。slaves文件记录运行datanode和tasktracker的所有机器。文件存放在配置目录中,用户也可以改
hadoop-env.sh的hadoop_salves项的值,将slaves文件放在其他地方。且只有运行在namenode或jobtrack上的控制脚本能使用这些文件。 环境设置
Hadoop为各个守护进程分配1000MB内存。该值由hadoop-env.sh文件的
Hadoop_heapsize参数控制。tasktrack启用独立的子JVM以运行map和reduce任务。 一个tasktracker能够同时运行最多多少个map任务,由
mapred.tasktracker.map.tasks.maximum属性控制,默认值是2个任务。相应的,一个tasktracker
能够同时运行的最多reduce任务数由mapred.tasktracker.reduce.tasks.maximum属性控制,默认值也是2。分配给每个子JVM的内存量由mapred.child.java .opts属性决定。默认值是-Xmx200m,表示每个任务分配200MB内存。
计算工作及诶单的内存占用量
JVM 默认内存占用量 配置8个处理器的机器的内存占用量,每个子任务分配400MB
datanode 1000 1000 tasktracker 1000 1000
tasktracker的子map任务 2 x 200 7 x 400 tasktracker额子reduce任务 2 x 200 7 x 400\\ 总计 2800 7600
在一个tasktrack上能够同时运行的任务数取决于一台机器有多少个处理器。由于MapReduce作业通常是I/O-bound,因为将任务数设定为超出处理器数也
有一定道理,能够获得更好的利用率。至于到底需要运行多少个任务,则依赖于相关作业的CPU使用情况,但经验法则是任务数(包括map和reduce任务)与 处理器数也有一定道理、 java
设置java安装的位置
1、在hadoop-env.sh文件中设置JAVA_HOME项。 2、在shell中设置JAVA_HOME环境变量。
系统日志文件
默认情况下,Hadoop生成的系统日志文件存放在$HADOOP_install/log目录之中。可以通过hadoop-env.sh文件中的hadoop_log_dir来修改。
通常将日志文件存放在/var/log/hadoop目录中。实现方式hadoop-env.sh中加入export hadoop_log_dir=/var/log/hadoop
如果日志目录并不存在,则会创建该目录。运行在各台机器上的各个hadoop守护进程均会产生两类日志文件。
第一类:以.log作为后缀名,是通过log4j记录的。对问题进行故障诊断时需要查看这个文件。
第二类:以.out作为后缀名,记录标准输出和标准错误日志。文件通常只包含少量记录,甚至为空,重启守护进程时,系统会创建一个
新文件来记录此类日志。系统仅保留最新的5个日志文件。值在1和5之间,5表示最旧的文件
日志文件的名称(两种类型)包含运行守护进程的用户名称,守护进程名称和本地主机名等信息。这种命名方法保证集群内所有机器的日志文件名称各不相同 ,从而可以将所有日志文件存档到一个目录中。 SSH设置