- 浏览: 187320 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wg1214:
CommonRcFileCompression 这个类里的DA ...
普通文本压缩成RcFile的通用类 -
wdt1988520:
要导入哪些jar包呀? 有完整的源码吗?
普通文本压缩成RcFile的通用类 -
yiqi1943:
timeStampDate函数没找到
RcFile存储和读取操作 -
yiqi1943:
您用的hadoop和hive的版本是什么呢?
RcFile存储和读取操作 -
心如止水13:
有没有源码呢!?学习一下哎!
JBPM4.3总结三
【转自http://www.cnblogs.com/wayne1017/archive/2007/03/20/678724.html】
本文主要是以安装和使用hadoop-0.12.0 为例,指出在部署Hadoop的时候容易遇到的问题以及如何解决。
硬件环境
共有3台机器,均使用的FC5系统,Java使用的是jdk1.6.0。IP配置如下:
dbrg-1:202.197.18.72
dbrg-2:202.197.18.73
dbrg-3:202.197.18.74
这里有一点需要强调的就是,务必要确保每台机器的主机名和IP地址之间能正确解析 。
一个很简单的测试办法就是ping一下主机名,比如在dbrg-1上ping dbrg-2,如果能ping通就OK!若不能正确解析,可以修改/etc/hosts文件,如果该台机器作Namenode用,则需要在hosts文件 中加上集群中所有机器的IP地址及其对应的主机名;如果该台机器作Datanode用,则只需要在hosts文件中加上本机IP地址和Namenode机 器的IP地址。
以本文为例,dbrg-1中的/etc/hosts文件看起来就应该是这样的:
127.0.0.0 localhost localhost
202.197.18.72 dbrg-1 dbrg-1
202.197.18.73 dbrg-2 dbrg-2
202.197.18.74 dbrg-3 dbrg-3
dbrg-2中的/etc/hosts文件看起来就应该是这样的:
127.0.0.0 localhost localhost
202.197.18.72 dbrg-1 dbrg-1
202.197.18.73 dbrg-2 dbrg-2
在上一篇学习笔记中提到过,对于Hadoop来说,在HDFS看来,节点分为Namenode和
Datanode,其中Namenode只有一个,Datanode可以是很多;在MapReduce看来,节点又分为Jobtracker和
Tasktracker,其中Jobtracker只有一个,Tasktracker可以是很多。
我是将namenode和jobtracker部署在dbrg-1上,dbrg-2,dbrg-3作为datanode和tasktracker。当然你也可以将namenode,datanode,jobtracker,tasktracker全部部署在一台机器上
目录结构
由于Hadoop要求所有机器上hadoop的部署目录结构要相同,并且都有一个相同的用户名的帐户
。
我的三台机器上是这样的:都有一个dbrg的帐户,主目录是/home/dbrg
Hadoop部署目录结构如下:/home/dbrg/HadoopInstall,所有的hadoop版本放在这个目录中。
将hadoop0.12.0压缩包解压至HadoopInstall中,为了方便以后升级,建议建立一个链接指向要使用的hadoop版本
,不妨设为hadoop
[dbrg@dbrg-1:HadoopInstall]$ln -s hadoop0.12.0 hadoop
这样一来,所有的配置文件都在/hadoop/conf/目录中,所有执行程序都在/hadoop/bin目录中。
但是由于上述目录中hadoop的配置文件和hadoop的安装目录是放在一起的,这样一旦日后升级hadoop版本的时候所有的配置文件都会被覆盖,因此建议将配置文件与安装目录分离
,
一种比较好的方法就是建立一个存放配置文件的目录,/home/dbrg/HadoopInstall/hadoop-config/,然后将
/hadoop/conf/目录中的hadoop_site.xml,slaves,hadoop_env.sh三个文件拷贝到hadoop-
config/目录中(这个问题很奇怪,在官网上的Getting Started With Hadoop
中
说是只需要拷贝这个三个文件到自己创建的目录就可以了,但我在实际配置的时候发现还必须把masters这个文件也拷贝到hadoop-conf/目录中
才行,不然启动Hadoop的时候就会报错说找不到masters这个文件),并指定环境变量$HADOOP_CONF_DIR指向该目录。环境变量在
/home/dbrg/.bashrc和/etc/profile中设定。
综上所述,为了方便以后升级版本,我们需要做到配置文件与安装目录分离,并通过设定一个指向我们要使用的版本的hadoop的链接,这样可以减少我们对配置文件的维护
。在下面的部分,你就会体会到这样分离以及链接的好处了。
SSH设置
在Hadoop启动以后,Namenode是通过SSH
(Secure Shell)来启动和停止各个节点上的各种守护进程的,这就需要在节点之间执行指令的时候是不需要输入密码的方式,故我们需要配置SSH使用无密码公钥认证的方式。
首先要保证每台机器上都装了SSH服务器,且都正常启动。实际中我们用的都是OpenSSH
,这是SSH协议的一个免费开源实现。FC5中默认安装的OpenSSH版本是OpenSSH4.3P2。
以
本文中的三台机器为例,现在dbrg-1是主节点,它需要主动发起SSH连接到dbrg-2和dbrg-3,对于SSH服务来说,dbrg-1就是SSH
客户端,而dbrg-2、dbrg-3则是SSH服务端,因此在dbrg-2,dbrg-3上需要确定sshd服务已经启动。简单的说,在dbrg-1上
需要生成一个密钥对,即一个私钥,一个公钥。将公钥拷贝到dbrg-2,dbrg-3上,这样,比如当dbrg-1向dbrg-2发起ssh连接的时
候,dbrg-2上就会生成一个随机数并用dbrg-1的公钥对这个随机数进行加密,并发送给dbrg-1;dbrg-1收到这个加密的数以后用私钥进行
解密,并将解密后的数发送回dbrg-2,dbrg-2确认解密的数无误后就允许dbrg-1进行连接了。这就完成了一次公钥认证过程。
对于本文中的三台机器,首先在dbrg-1上生成密钥对:
[dbrg@dbrg-1:~]$ssh-keygen -t rsa
这
个命令将为dbrg-1上的用户dbrg生成其密钥对,询问其保存路径时直接回车采用默认路径,当提示要为生成的密钥输入passphrase的时候,直
接回车,也就是将其设定为空密码。生成的密钥对id_rsa,id_rsa.pub,默认存储在/home/dbrg/.ssh目录下。然后将
id_rsa.pub的内容复制到每个机器(也包括本机)的/home/dbrg/.ssh/authorized_keys文件中,如果机器上已经有
authorized_keys这个文件了,就在文件末尾加上id_rsa.pub中的内容,如果没有authorized_keys这个文件,直接cp
或者scp就好了,下面的操作假设各个机器上都没有authorized_keys文件。
对于dbrg-1
[dbrg@dbrg-1:.ssh]$cp id_rsa.pub authorized_keys
对于dbrg-2(dbrg-3同dbrg-2的方法)
[dbrg@dbrg-2:~]$mkdir .ssh
[dbrg@dbrg-1:.ssh]$scp authorized_keys dbrg-2:/home/dbrg/.ssh/
此处的scp就是通过ssh进行远程copy,此处需要输入远程主机的密码,即dbrg-2机器上dbrg帐户的密码,当然,你也可以用其他方法将authorized_keys文件拷贝到其他机器上
[dbrg@dbrg-2:.ssh]$chmod 644 authorized_keys
这一步非常关键,必须保证authorized_keys只对其所有者有读写权限,其他人不允许有写的权限,否则SSH是不会工作的。我就曾经在配置SSH的时候郁闷了好久。
[dbrg@dbrg-2:.ssh]ls -la
drwx------ 2 dbrg dbrg .
drwx------ 3 dbrg dbrg ..
-rw-r--r-- 1 dbrg dbrg authorized_keys
注意每个机器上的.ssh目录的ls -la都应该和上面是一样的
接着,在三台机器上都需要对sshd服务进行配置(其实是可以不用配置的,完成了上面的那些操作了以后SSH就已经可以工作了),在三台机器上修改文件/etc/ssh/sshd_config
#去除密码认证
PasswordAuthentication no
AuthorizedKeyFile .ssh/authorized_keys
至此各个机器上的SSH配置已经完成,可以测试一下了,比如dbrg-1向dbrg-2发起ssh连接
[dbrg@dbrg-1:~]$ssh dbrg-2
如果ssh配置好了,就会出现以下提示信息
The authenticity of host [dbrg-2] 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 dbrg-1
Hadoop环境变量
在/home/dbrg/HadoopInstall/hadoop-conf目录下的hadoop_env.sh中设置Hadoop需要的环境变量,其中JAVA_HOME是必须设定的变量
。HADOOP_HOME变量可以设定也可以不设定,如果不设定,HADOOP_HOME默认的是bin目录的父目录,即本文中的/home/dbrg/HadoopInstall/hadoop。我的是这样设置的
export HADOOP_HOME=/home/dbrg/HadoopInstall/hadoop
export JAVA_HOME=/usr/java/jdk1.6.0
从这个地方就可以看出前面所述的创建hadoop0.12.0的链接hadoop的优点了,当以后更新hadoop的版本的时候,就不需要在改配置文件,只需要更改链接就可以了。
Hadoop配置文件
如前所述,在hadoop-conf/目录下,打开slaves文件,该文件用来指定所有的从节点,一行指定一个主机名
。即本文中的dbrg-2,dbrg-3,因此slaves文件看起来应该是这样的
dbrg-2
dbrg-3
在
conf/目录中的hadoop-default.xml中包含了Hadoop的所有配置项,但是不允许直接修改!可以在hadoop-conf/目录下
的hadoop-site.xml里面定义我们需要的项,其值会覆盖hadoop-default.xml中的默认值。可以根据自己的实际需要来进行定
制。以下是我的配置档:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.default.name</name>
<value>dbrg-1:9000</value>
<description>The name of the default file system. Either the
literal string "local" or a host:port for DFS.</description>
</property>
<property>
<name>mapred.job.tracker</name>
<value>dbrg-1: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>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/dbrg/HadoopInstall/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>dfs.name.dir</name>
<value>/home/dbrg/HadoopInstall/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/dbrg/HadoopInstall/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>
<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>
</configuration>
部署Hadoop
前面讲的这么多Hadoop的环境变量和配置文件都是在dbrg-1这台机器上的,现在需要将hadoop部署到其他的机器上,保证目录结构一致
。
[dbrg@dbrg-1:~]$scp -r /home/dbrg/HadoopInstall dbrg-2:/home/dbrg/
[dbrg@dbrg-1:~]$scp -r /home/dbrg/HadoopInstall dbrg-3:/home/dbrg/
至此,可以说,Hadoop已经在各个机器上部署完毕了下面就让我们开始启动Hadoop吧
启动Hadoop
启动之前,我们先要格式化namenode
,先进入~/HadoopInstall/hadoop目录,执行下面的命令
[dbrg@dbrg-1:hadoop]$bin/hadoop namenode -format
不出意外,应该会提示格式化成功。如果不成功,就去hadoop/logs/目录下去查看日志文件
下面就该正式启动hadoop啦,在bin/下面有很多启动脚本,可以根据自己的需要来启动。
* start-all.sh 启动所有的Hadoop守护。包括namenode, datanode, jobtracker, tasktrack
* stop-all.sh 停止所有的Hadoop
* start-mapred.sh 启动Map/Reduce守护。包括Jobtracker和Tasktrack
* stop-mapred.sh 停止Map/Reduce守护
* start-dfs.sh 启动Hadoop DFS守护.Namenode和Datanode
* stop-dfs.sh 停止DFS守护
在这里,简单启动所有守护
[dbrg@dbrg-1:hadoop]$bin/start-all.sh
同样,如果要停止hadoop,则
[dbrg@dbrg-1:hadoop]$bin/stop-all.sh
HDFS操作
运行bin/目录的hadoop命令,可以查看Haoop所有支持的操作及其用法,这里以几个简单的操作为例。
建立目录
[dbrg@dbrg-1:hadoop]$bin/hadoop dfs -mkdir testdir
在HDFS中建立一个名为testdir的目录
复制文件
[dbrg@dbrg-1:hadoop]$bin/hadoop dfs -put /home/dbrg/large.zip testfile.zip
把本地文件large.zip拷贝到HDFS的根目录/user/dbrg/下,文件名为testfile.zip
查看现有文件
[dbrg@dbrg-1:hadoop]$bin/hadoop dfs -ls
【转自http://www.cnblogs.com/wayne1017/archive/2007/03/20/678724.html】
发表评论
-
获得CSDN的验证码
2011-02-22 12:22 1028import java.awt.Image; impo ... -
非技术java面试题
2010-10-12 10:20 1080在面试前先了解、练习 ... -
面试总结⑥
2010-07-21 18:13 912术 1.struts1和2的区别 2.arraylis ... -
面试总结五
2010-07-21 17:47 938开始是综合性的题,如看图像有多少三角形,火车头等等。。 ... -
面试总结四
2010-07-20 23:14 8522010.7.20 下午到面试。 面试题如下: 1. s ... -
简历问题总结
2010-07-16 17:26 1073总结下针对我自己的简历,面试官会问的问题,把这些都搞明白了。就 ... -
面试总结三
2010-07-16 15:54 905上午去面试了。公司不小。面试官也灰常好。但是基础不扎实,说话无 ... -
面试总结2
2010-07-14 14:57 808今天本来是三家面试,,上午去面了一家,感觉自己基础太弱。下午的 ... -
servlet生命周期详解
2010-07-09 15:31 985Servlet生命周期是由Servlet容器来控制的,分为3个 ... -
二分法查找数字所在位置
2010-07-09 15:10 1560条件1:数组为整型数组,并且有序 条件2:用递归方法,数组包 ... -
今日面试总结
2010-07-09 13:11 941上午10点约好面试去,到了上地站9点,没想到477路公交车好难 ... -
简历
2009-04-30 09:54 857已删。已删。已删。已删。
相关推荐
XEN虚拟机的安装配置,Hadoop集群环境的安装配置以及部署
Linux基础知识学习笔记(markdown格式) 包括:基础指令、yum、日期、时区、固定IP、ping、wget、vurl、nmap、nestat、进程管理、主机状态监控、磁盘信息监控、网络状态监控、上传、下载、用户、权限、解压、压缩、...
手把手教你搭建分布式Hadoop家族集群视频教程(视频+讲义+笔记+配置),内容包括 Hadoop,SQOOP,Hive,Hbase的安装配置及集群搭建。内容包括但不限于: 01_回顾集群架构及配置集群时间同步 02_配置主节点与从节点...
openstack学习笔记 各种虚拟化软件的比较 云计算 hadoop
内容概要: 架构、流程、机制、原理、环境、数据同步、免密登录等; HadoopHDFS-JavaRPC操作代码,含...hadoop生态现状、介绍、部署; hadoop2.4.1伪分布式搭建; 分布式文件系统; 复安装过程详细步骤; hdfs笔记;
HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)...
希望通过亲身实践,加深自己对Hadoop、Spark两类大数据工具的理解,熟悉其从集群部署到运作的基本流程,了解FPGrowth算法的基本原理,掌握算法在关联规则中的基本应用,为日后的大数据学习积累经验。 ### 2. 实践...
5、Hadoop生态圈的学习笔记,主要记录HDFS、MapReduce、Yarn相关读书笔记及源码分析等 5.1 HDFS Hadoop快速入门 HDFSOverView Hadoop广义生态系统 Hadoop高可用配置 HadoopCommon分析 HDFS集群相关管理 HDFS Shell ...
学习笔记 一些学习笔记 壳 deleteCheckPoints 用于定时清理Flink在Hadoop-HDFS产生的状态日志文件中,当前部署在测试172.21.91.206和线上10.18.2.10 sendMessagesToKafka 用于模仿数据流,定时向Kafka插入数据,目前...
flink-helper chm格式文件,包括flink集群部署,flink学习笔记,hadoop2.7.7配置,flink生产主要配置,对于flink初学者和集群搭建帮助会比较大。内容是chm格式,便于阅读携带
写在最前: ...最近在学习django的过程中,用django做了一个小demo,所以试试看能不能部署到服务器上,自己顺便也熟悉一下Django整个部署的流程,因为之前学习flask的时候,就使用的uwsgi来作为python w