- 浏览: 188923 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
duguyiren3476:
我现在的版本是drill0.8.0版本的,搭建了分布式4个节点 ...
walter的drill笔试之二-安装与部署 -
zhangth:
写的不错,受教了
图片分离之图片服务器问题 -
lt200819:
zh55com 写道如何查询mysql数据?如何查询hbase ...
walter的drill笔试之二-安装与部署 -
zh55com:
如何查询mysql数据?如何查询hbase数据?
walter的drill笔试之二-安装与部署 -
QuarterLifeForJava:
不错,挺好的,那如果是update、delete、insert ...
Mysql百万级数据查询优化
转载请注明出处http://lt200819.iteye.com/admin/blogs/1473265
IP配置如下:
node1:192.168.0.101
node2:192.168.0.102
node3:192.168.0.103
这里有一点需要强调的就是,务必要确保每台机器的主机名和IP地址之间能正确解析。
一个很简单的测试办法就是ping一下主机名,比如在node1上ping node2,如果能ping通就OK!若不能正确解析,可以修改/etc/hosts文件,如果该台机器作Namenode用,则需要在hosts文件中加上集群中所有机器的IP地址及其对应的主机名;如果该台机器作Datanode用,则只需要在hosts文件中加上本机IP地址和Namenode机器的IP地址。
这里所有机器的/etc/hosts统一为:
127.0.0.1 localhost localhost
192.168.0.101 node1 node1
192.168.0.102 node2 node2
192.168.0.103 node3 node3
对于Hadoop来说,在HDFS看来,节点分为Namenode和Datanode,其中Namenode只有一个,Datanode可以是很多;在MapReduce看来,节点又分为Jobtracker和Tasktracker,其中Jobtracker只有一个,Tasktracker可以是很多。
我是将namenode和jobtracker部署在node1上,node2,node3作为datanode和tasktracker。当然你也可以将namenode,datanode,jobtracker,tasktracker全部部署在一台机器上
目录结构
同上一篇 walter的hadoop学习笔记二 安装部署
SSH设置
在Hadoop启动以后,Namenode是通过SSH(Secure Shell)来启动和停止各个节点上的各种守护进程的,这就需要在节点之间执行指令的时候是不需要输入密码的方式,故我们需要配置SSH使用无密码公钥认证的方式。
首先要保证每台机器上都装了SSH服务器,且都正常启动。实际中我们用的都是OpenSSH,这是SSH协议的一个免费开源实现。CentOS6.2默认安装了OpenSSH
以本文中的三台机器为例,现在node1是主节点,它需要主动发起SSH连接到node2和node3,对于SSH服务来说,node1就是SSH客户端,而node2、node3则是SSH服务端,因此在node2,node3上需要确定sshd服务已经启动。简单的说,在node1上需要生成一个密钥对,即一个私钥,一个公钥。将公钥拷贝到node2,node3上,这样,比如当node1向node2发起ssh连接的时候,node2上就会生成一个随机数并用node1的公钥对这个随机数进行加密,并发送给node1;node1收到这个加密的数以后用私钥进行解密,并将解密后的数发送回node2,node2确认解密的数无误后就允许dbrg-1进行连接了。这就完成了一次公钥认证过程。
对于本文中的三台机器,首先在node1上生成密钥对:
ssh-keygen -t rsa
这个命令将为dbrg-1上的用户dbrg生成其密钥对,询问其保存路径时直接回车采用默认路径,当提示要为生成的密钥输入passphrase的时候,直接回车,也就是将其设定为空密码。生成的密钥对id_rsa,id_rsa.pub,默认存储在/home/walter/.ssh目录下。然后将id_rsa.pub的内容复制到每个机器(也包括本机)的/home/walter/.ssh/authorized_keys文件中,如果机器上已经有authorized_keys这个文件了,就在文件末尾加上id_rsa.pub中的内容cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys,如果没有authorized_keys这个文件,直接cp或者scp就好了,下面的操作假设各个机器上都没有authorized_keys文件。
对于node1:
[walter@node1:.ssh]$cp id_rsa.pub authorized_keys
对于node2和node3
[dbrg@node2:~]$mkdir .ssh
[dbrg@node1:.ssh]$scp authorized_keys node2:/home/walter/.ssh/
此处的scp就是通过ssh进行远程copy,此处需要输入远程主机的密码,即node2机器上walter帐户的密码,当然,你也可以用其他方法将authorized_keys文件拷贝到其他机器上
[walter@node2:.ssh]$chmod 644 authorized_keys
这一步非常关键,必须保证authorized_keys只对其所有者有读写权限,其他人不允许有写的权限,否则SSH是不会工作的。
[walter@node2:.ssh]ls -la
drwx------ 2 walter walter .
drwx------ 3 walter walter ..
-rw-r--r-- 1 walter walter authorized_keys
注意每个机器上的.ssh目录的ls -la都应该和上面是一样的
接着,在三台机器上都需要对sshd服务进行配置(其实是可以不用配置的,完成了上面的那些操作了以后SSH就已经可以工作了),在三台机器上修改文件/etc/ssh/sshd_config
#去除密码认证
PasswordAuthentication no
AuthorizedKeyFile .ssh/authorized_keys
至此各个机器上的SSH配置已经完成,可以测试一下了,比如node1向node2发起ssh连接
[walter@node1:~]$ssh node2
如果ssh配置好了,就会出现以下提示信息
The authenticity of host [node2] can't be established.
Key fingerprint is 1024 5f:a0:0b:65:d3:82:df:ab:44:62:6d:98:9c:fe:e9:52.
Are you sure you want to continue connecting (yes/no)?
OpenSSH告诉你它不知道这台主机,但是你不用担心这个问题,因为你是第一次登录这台主机。键入“yes”。这将把这台主机的“识别标记”加到“~/.ssh/know_hosts”文件中。第二次访问这台主机的时候就不会再显示这条提示信息了。
然后你会发现不需要输入密码就可以建立ssh连接了,恭喜你,配置成功了
不过,别忘了测试本机ssh node1
环境变量参考上一篇文章 walter的hadoop学习笔记二 安装部署
设置hadoop的命令行路径
环境变量在/home/walter/.bashrc中设定。
export HADOOP_CONF_DIR=/home/walter/software/hadoop-config
export HADOOP_INSTALL=/home/walter/software/hadoop
export PATH=$PATH:$HADOOP_INSTALL/bin
Hadoop配置文件
在hadoop-conf/目录下,打开slaves文件,该文件用来指定所有的从节点,一行指定一个主机名。即本文中的node12,node3,因此slaves文件看起来应该是这样的
node1
node2
在conf/目录中的hadoop-default.xml中包含了Hadoop的所有配置项,但是不允许直接修改!可以在hadoop-conf/目录下的core-site.xml里面定义我们需要的项,其值会覆盖hadoop-default.xml中的默认值。可以根据自己的实际需要来进行定制。以下是我的配置档:
hadoop-conf/core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://node1:9000</value>
<description>The name of the default file system. </description>
</property>
</configuration>
hadoop-conf/hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
<description>Default block replication. The actual number of replications can be specified when the file is created. The default is used if replication is not specified in create time.</description>
</property>
<property>
<name>mapred.local.dir</name>
<value>/home/walter/software/hadoop/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>dfs.name.dir</name>
<value>/home/walter/software/hadoop/filesystem/name</value>
<description>Determines where on the local filesystem the DFS name node should store the name table. If this is a comma-delimited list of directories then the name table is replicated in all of the directories, for redundancy. </description>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/walter/software/hadoop/filesystem/data</value>
<description>Determines where on the local filesystem an DFS data node should store its blocks. If this is a comma-delimited list of directories, then data will be stored in all named directories, typically on different devices. Directories that do not exist are ignored.</description>
</property>
</configuration>
hadoop-conf/mapred-site.xml:
<property>
<name>mapred.job.tracker</name>
<value>node1:9001</value>
<description>The host and port that the MapReduce job tracker runs at. If "local", then jobs are run in-process as a single map and reduce task.</description>
</property>
</configuration>
部署Hadoop
前面讲的这么多Hadoop的环境变量和配置文件都是在node1这台机器上的,现在需要将hadoop
部署到其他的机器上,保证目录结构一致。
[walter@node1:~]$scp -r /home/walter/softerware node2:/home/walter/
[walter@node1:~]$scp -r /home/walter/softerware node3:/home/walter/
[walter@node1:~]$scp -r /home/walter/.bashrc node3:/home/walter/
至此,可以说,Hadoop已经在各个机器上部署完毕了下面就让我们开始启动Hadoop吧
参考上一篇walter的hadoop学习笔记二 安装部署测试部分
参考网址:
官方文档
http://lt200819.iteye.com/blog/1176184
IP配置如下:
node1:192.168.0.101
node2:192.168.0.102
node3:192.168.0.103
这里有一点需要强调的就是,务必要确保每台机器的主机名和IP地址之间能正确解析。
一个很简单的测试办法就是ping一下主机名,比如在node1上ping node2,如果能ping通就OK!若不能正确解析,可以修改/etc/hosts文件,如果该台机器作Namenode用,则需要在hosts文件中加上集群中所有机器的IP地址及其对应的主机名;如果该台机器作Datanode用,则只需要在hosts文件中加上本机IP地址和Namenode机器的IP地址。
这里所有机器的/etc/hosts统一为:
127.0.0.1 localhost localhost
192.168.0.101 node1 node1
192.168.0.102 node2 node2
192.168.0.103 node3 node3
对于Hadoop来说,在HDFS看来,节点分为Namenode和Datanode,其中Namenode只有一个,Datanode可以是很多;在MapReduce看来,节点又分为Jobtracker和Tasktracker,其中Jobtracker只有一个,Tasktracker可以是很多。
我是将namenode和jobtracker部署在node1上,node2,node3作为datanode和tasktracker。当然你也可以将namenode,datanode,jobtracker,tasktracker全部部署在一台机器上
目录结构
同上一篇 walter的hadoop学习笔记二 安装部署
SSH设置
在Hadoop启动以后,Namenode是通过SSH(Secure Shell)来启动和停止各个节点上的各种守护进程的,这就需要在节点之间执行指令的时候是不需要输入密码的方式,故我们需要配置SSH使用无密码公钥认证的方式。
首先要保证每台机器上都装了SSH服务器,且都正常启动。实际中我们用的都是OpenSSH,这是SSH协议的一个免费开源实现。CentOS6.2默认安装了OpenSSH
以本文中的三台机器为例,现在node1是主节点,它需要主动发起SSH连接到node2和node3,对于SSH服务来说,node1就是SSH客户端,而node2、node3则是SSH服务端,因此在node2,node3上需要确定sshd服务已经启动。简单的说,在node1上需要生成一个密钥对,即一个私钥,一个公钥。将公钥拷贝到node2,node3上,这样,比如当node1向node2发起ssh连接的时候,node2上就会生成一个随机数并用node1的公钥对这个随机数进行加密,并发送给node1;node1收到这个加密的数以后用私钥进行解密,并将解密后的数发送回node2,node2确认解密的数无误后就允许dbrg-1进行连接了。这就完成了一次公钥认证过程。
对于本文中的三台机器,首先在node1上生成密钥对:
ssh-keygen -t rsa
这个命令将为dbrg-1上的用户dbrg生成其密钥对,询问其保存路径时直接回车采用默认路径,当提示要为生成的密钥输入passphrase的时候,直接回车,也就是将其设定为空密码。生成的密钥对id_rsa,id_rsa.pub,默认存储在/home/walter/.ssh目录下。然后将id_rsa.pub的内容复制到每个机器(也包括本机)的/home/walter/.ssh/authorized_keys文件中,如果机器上已经有authorized_keys这个文件了,就在文件末尾加上id_rsa.pub中的内容cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys,如果没有authorized_keys这个文件,直接cp或者scp就好了,下面的操作假设各个机器上都没有authorized_keys文件。
对于node1:
[walter@node1:.ssh]$cp id_rsa.pub authorized_keys
对于node2和node3
[dbrg@node2:~]$mkdir .ssh
[dbrg@node1:.ssh]$scp authorized_keys node2:/home/walter/.ssh/
此处的scp就是通过ssh进行远程copy,此处需要输入远程主机的密码,即node2机器上walter帐户的密码,当然,你也可以用其他方法将authorized_keys文件拷贝到其他机器上
[walter@node2:.ssh]$chmod 644 authorized_keys
这一步非常关键,必须保证authorized_keys只对其所有者有读写权限,其他人不允许有写的权限,否则SSH是不会工作的。
[walter@node2:.ssh]ls -la
drwx------ 2 walter walter .
drwx------ 3 walter walter ..
-rw-r--r-- 1 walter walter authorized_keys
注意每个机器上的.ssh目录的ls -la都应该和上面是一样的
接着,在三台机器上都需要对sshd服务进行配置(其实是可以不用配置的,完成了上面的那些操作了以后SSH就已经可以工作了),在三台机器上修改文件/etc/ssh/sshd_config
#去除密码认证
PasswordAuthentication no
AuthorizedKeyFile .ssh/authorized_keys
至此各个机器上的SSH配置已经完成,可以测试一下了,比如node1向node2发起ssh连接
[walter@node1:~]$ssh node2
如果ssh配置好了,就会出现以下提示信息
The authenticity of host [node2] can't be established.
Key fingerprint is 1024 5f:a0:0b:65:d3:82:df:ab:44:62:6d:98:9c:fe:e9:52.
Are you sure you want to continue connecting (yes/no)?
OpenSSH告诉你它不知道这台主机,但是你不用担心这个问题,因为你是第一次登录这台主机。键入“yes”。这将把这台主机的“识别标记”加到“~/.ssh/know_hosts”文件中。第二次访问这台主机的时候就不会再显示这条提示信息了。
然后你会发现不需要输入密码就可以建立ssh连接了,恭喜你,配置成功了
不过,别忘了测试本机ssh node1
环境变量参考上一篇文章 walter的hadoop学习笔记二 安装部署
设置hadoop的命令行路径
环境变量在/home/walter/.bashrc中设定。
export HADOOP_CONF_DIR=/home/walter/software/hadoop-config
export HADOOP_INSTALL=/home/walter/software/hadoop
export PATH=$PATH:$HADOOP_INSTALL/bin
Hadoop配置文件
在hadoop-conf/目录下,打开slaves文件,该文件用来指定所有的从节点,一行指定一个主机名。即本文中的node12,node3,因此slaves文件看起来应该是这样的
node1
node2
在conf/目录中的hadoop-default.xml中包含了Hadoop的所有配置项,但是不允许直接修改!可以在hadoop-conf/目录下的core-site.xml里面定义我们需要的项,其值会覆盖hadoop-default.xml中的默认值。可以根据自己的实际需要来进行定制。以下是我的配置档:
hadoop-conf/core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://node1:9000</value>
<description>The name of the default file system. </description>
</property>
</configuration>
hadoop-conf/hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
<description>Default block replication. The actual number of replications can be specified when the file is created. The default is used if replication is not specified in create time.</description>
</property>
<property>
<name>mapred.local.dir</name>
<value>/home/walter/software/hadoop/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>dfs.name.dir</name>
<value>/home/walter/software/hadoop/filesystem/name</value>
<description>Determines where on the local filesystem the DFS name node should store the name table. If this is a comma-delimited list of directories then the name table is replicated in all of the directories, for redundancy. </description>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/walter/software/hadoop/filesystem/data</value>
<description>Determines where on the local filesystem an DFS data node should store its blocks. If this is a comma-delimited list of directories, then data will be stored in all named directories, typically on different devices. Directories that do not exist are ignored.</description>
</property>
</configuration>
hadoop-conf/mapred-site.xml:
<property>
<name>mapred.job.tracker</name>
<value>node1:9001</value>
<description>The host and port that the MapReduce job tracker runs at. If "local", then jobs are run in-process as a single map and reduce task.</description>
</property>
</configuration>
部署Hadoop
前面讲的这么多Hadoop的环境变量和配置文件都是在node1这台机器上的,现在需要将hadoop
部署到其他的机器上,保证目录结构一致。
[walter@node1:~]$scp -r /home/walter/softerware node2:/home/walter/
[walter@node1:~]$scp -r /home/walter/softerware node3:/home/walter/
[walter@node1:~]$scp -r /home/walter/.bashrc node3:/home/walter/
至此,可以说,Hadoop已经在各个机器上部署完毕了下面就让我们开始启动Hadoop吧
参考上一篇walter的hadoop学习笔记二 安装部署测试部分
参考网址:
官方文档
http://lt200819.iteye.com/blog/1176184
发表评论
-
Hadoop YARN框架调研以及问题总结
2013-10-15 15:04 3769Hadoop YARN框架调研以及问题总结 1.YARN ... -
Haoop IPC与Java Proxy机制
2013-06-18 17:51 1087关于Hadoop IPC机制的描 ... -
JobTracker与Scheduler
2013-06-22 21:11 928JobTracker作为hadoop mapred ... -
Hadoop Metrics收集机制
2013-06-25 09:55 2923Hadoop通过Metrics机制,对集群中各机器的执行参 ... -
Hadoop任务调度机制
2013-06-17 18:44 2245Hadoop其实没那么复杂,对每个子功能进行细分,一一解读 ... -
hadoop 2.x 的一些改进
2013-05-12 20:42 742apache hadoop 2.x 是在1.x版本上做了重大 ... -
mac 系统下Unable to load realm info from SCDynamicStore
2013-04-03 20:45 953在mac系统下出现 Unable to load real ... -
MapReduce求Top K的算法
2013-03-20 14:52 1424今天去百度面试,这么简单的题做法都有问题,悲哀啊,m ... -
walter的hadoop学习笔记四 配置hadoop的eclipse开发环境
2013-03-17 14:03 1485开发环境 操作系统:ubuntu12.04 hadoo ... -
Hadoop 解除 "Name node is in safe mode"
2013-03-16 20:16 1125运行hadoop程序时,有时候会报以下错误: or ... -
walter的hadoop学习笔记二 安装部署
2012-04-02 18:09 2006转载请注明出处http://lt200819.iteye.co ... -
walter的hadoop学习笔记一 概述
2012-04-02 17:51 1007本系列学习笔记将记录笔者学习hadoop的详细情况,并转载一些 ... -
hadoop集群搭建各种问题
2012-01-30 15:31 16451.hadoop入门篇,包括软件下载及配置,并保证单机和伪分布 ... -
Hadoop 解除 "Name node is in safe mode"
2012-01-30 15:00 1071之前在hadoop执行过程中使用了"ctrl+c&q ... -
Hadoop学习笔记二 安装部署
2011-09-20 20:23 1303本文主要是以安装和使用hadoop-0.12.0为例,指出在部 ... -
Hadoop学习笔记一 简要介绍
2011-09-20 20:19 790这里先大致介绍一下Hado ...
相关推荐
在搭建Hadoop HA高可用集群时,需要考虑到Hadoop、Zookeeper和HBase三个组件之间的版本兼容性问题。不同的版本组合可能会出现不兼容问题,因此需要选择合适的版本组合。 四、安装和配置Zookeeper Zookeeper是...
本人搭建hadoop完全分布式集群时,写的文档,内有详细步骤,
"Hadoop2完全分布式集群搭建" Hadoop2是一个基于分布式计算的开源大数据处理框架,具有高可扩展性、可靠性和高性能等特点。下面是关于Hadoop2完全分布式集群搭建的知识点总结: 1. 前序 在搭建Hadoop2完全分布式...
Hadoop学习笔记,自己总结的一些Hadoop学习笔记,比较简单。
hadoop搭建集群笔记.虚拟机搭建hadoop集群
Hadoop 学习笔记.md
非常详细的linux上的hadoop集群搭建文档,可供参考,希望大家能够从中获益
本笔记将从环境搭建、HDFS配置、YARN配置、分布式配置到MapReduce编程,全方位介绍Hadoop的学习过程,并结合JavaWeb项目实践,帮助读者深入理解Hadoop的工作原理和应用。 ### 一、环境搭建 在开始Hadoop的学习之前...
"Hadoop系统完全分布式集群搭建方法" 本文档详细介绍了如何搭建Hadoop完全分布式集群,包括安装Linux操作系统、设置静态IP、安装SSH并配置免密码访问机制、配置Hadoop集群等步骤。本文档旨在帮助Hadoop初学者快速...
Hadoop2.2.0安装配置手册!完全分布式Hadoop集群搭建过程 按照文档中的操作步骤,一步步操作就可以完全实现hadoop2.2.0版本的完全分布式集群搭建过程
Hadoop高可用集群搭建手册 本文档主要介绍了Hadoop 2.6高可用集群的搭建过程,包括集群规划、搭建准备、集群搭建和配置等步骤。下面是从中提取的知识点: 1. 集群规划 在规划Hadoop集群时,需要考虑到集群的拓扑...
Hadoop 3.0 分布式集群搭建(HA)详细文档 本资源摘要信息主要介绍了 Hadoop 3.0 分布式集群搭建的详细步骤和要求,从搭建前的准备工作到集群的安装和配置,涵盖了主机规划、软件规划、用户规划、数据目录规划、...
"基于Linux平台下的Hadoop和Spark集群搭建研究" 本文主要研究了基于Linux平台下的Hadoop和Spark集群搭建,旨在提高计算速率和数据性能。Hadoop是最流行的处理平台,主要解决了数据存储和分布式计算的问题,而Spark...
hadoop2.2伪分布式集群搭建 #查看防火墙状态 service iptables status #关闭防火墙 service iptables stop #查看防火墙开机启动状态 chkconfig iptables --list #关闭防火墙开机启动 chkconfig iptables off
bboss hadoop集群搭建 hadoop集群搭建 hadoop集群搭建 hadoop集群搭建 hadoop集群搭建
本文将详细讲解如何搭建一个Hadoop集群,包括虚拟机安装、环境配置、Hadoop和Zookeeper的安装及集群验证。以下是对每个步骤的详细说明: 一、虚拟机安装与配置 在搭建Hadoop集群之前,首先需要准备多台虚拟机。可以...
Hadoop和Spark多节点集群搭建Hadoop和Spark多节点集群搭建Hadoop和Spark多节点集群搭建Hadoop和Spark多节点集群搭建Hadoop和Spark多节点集群搭建Hadoop和Spark多节点集群搭建Hadoop和Spark多节点集群搭建Hadoop和...
三、Hadoop学习笔记之三:用MRUnit做单元测试 MRUnit是针对MapReduce任务的单元测试框架,它允许开发者对MapReduce作业进行单元测试,确保每个Mapper和Reducer的功能正确性。通过MRUnit,可以在不实际运行Hadoop集群...
hadoop2.6.4-ha集群搭建.