| 
	(责任编辑:IT)
		(一)配置环境  
		1.1.硬件:  
		三台机器:ubuntu12.04-64 server  
		1.2 软件:  
		jdk 1.6.0_45 64位  
		hadoop-1.0.3   
		1.3 分工如下:  
		node00:NameNode/JobTracker/SecondaryNameNode(这里最好用一台机来单独做SecondaryNameNode)  
		node01:DataNode/TaskTracker  
		node02:DataNode/TaskTracker  
		假定三台虚拟机的Ip地址如下:  
		node00:192.168.0.145  
		node01:192.168.0.146  
		node02:192.168.0.147  
		(二)准备工作  
		2.1 首先在三台机器上创建相同用户(Hadoop集群基本要求)  
		创建用户的方法:  
		(1)sudo addgroup hadoop  
		(2)sudo adduser --ingroup hadoop hadoop  
		编辑/etc/sudoers编辑文件,在root ALL=(ALL)ALL行下添加haduser ALL=(ALL)ALL。如果不添加这行,haduser将不能执行sudo操作。  
		或者:在root ALL=(ALL)ALL行下添加haduser ALL =NOPASSWD :ALL,这样的话,sudo的时候就不用输密码。  
		2.2 安装jdk1.6.0_45  
		$ tar xvf jdk1.6.0_45.tar.gz  
		$ sudo mv jdk1.6.0_45 /usr/lib/java  
		$ sudo update-alternatives --install /usr/bin/java java /usr/lib/java/jdk1.6.0_45/bin/java 300  
		$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.6.0_45/bin/javac 300  
		$ sudo update-alternatives --config java  
		$ sudo update-alternatives --config javac  
		hadoop@node00:~$ java -version  
		java version "1.6.0_45"  
		Java(TM) SE Runtime Environment (build 1.6.0_45-b06)  
		Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)  
		jdk配置成功!  
		ps: jdk卸载非常简单,仅需要删除jdk的安装目录和/etc/profile的环境配置信息即可。  
		2.3 分别给三台机器设置:/etc/hosts 和/etc/hostname (好处是直接可以通过别名进行相互间访问)  
		(1)将三台机分别设置成nod00,node01,node02 。vim /etc/hostname  
		(2)将三台机器的/etc/hosts都设置成主机名和IP地址之间的映射关系  
		    127.0.0.1            localhost  
		    192.168.0.145    node00  
		    192.168.0.146    node01  
		    192.168.0.147    node02  
		(3)重启机器让hostname修改生效。  
		(4)验证以上配置是否成功:在node00机器上ping /node00/node01/node02  
		如果都能ping通,则说明这步配置成功。  
		2.4 配置ssh及无密码访问  
		(1)一般来说系统都是会默认安装sshd服务的。如果没有,或者版本比较老,可以重新安装:sudo apt-get install ssh  
		(2)设置node00可以无密码访问node01,node02  
		具体步骤如下:  
		    1)ssh-keygen -t rsa 一路回车(产生密钥)  
		    2)把id_rsa.pub追加到授权的key里面去(cat id_rsa.pub >> authorized_keys)  
		    3)重启SSH服务命令使其生效.(sudo /etc/init.d/ssh )  
		(4)将生成的authorized_keys文件拷贝到node01,node02这两台从节点的相同文件夹下。  
		    cd .ssh/  
		    scp authorized_keys node01@hadoop:~/.ssh/  
		    scp authorized_keys node01@hadoop:~/.ssh/  
		(4)配置到这里应该就可以进行ssh的无密码登录,验证是否无密码登录访问配置成功。  
		    $ssh localhost (验证是否可以无密码访问localhost)  
		    $ssh node01  
		    $ssh node02  
		    ps:这步骤有时候配置会出现问题,自己再将报错帖到网上搜索下。  
		以上步骤完成并配置成功后,接下来就正式开始安装Hadoop  
		ps:以上操作都是以hadoop用户登录进行操作  
		(三)Hadoop安装  
		Description: Hadoop集群中每个机器上面的配置基本相同,所以我们只需要在一台机器上配置部署好之后,直接scp将hadoop安装目录下所以文件复制到其他节点即可。  
		3.1下载并解压  
		下载:hadoop-1.0.3.tar.gz   
		ps:最新版本的hadoop-2.2.0.tar.gz不支持64位。要自己下载源码重写编译。  
		解压:  
		$cd /home/hadoop/  
		$tar xvf hadoop-1.0.3.tar.gz  
		3.2配置hadoop  
		配置文件在hadoop-1.0.3/conf文件夹下,需要配置的主要包括:hadoop-env.sh,core-site.xml,mapred-site.xml,masters,slaves.  
		1. vim hdfs-site.xml  
		<configuration>  
		        <property>  
		                <name>dfs.name.dir</name>  
		                <value>/home/hadoop/hadoop-1.0.3/hddata/dfs/name</value>  
		        </property>  
		        <property>  
		                <name>dfs.data.dir</name>  
		                <value>/home/hadoop/hadoop-1.0.3/hddata/dfs/data</value>  
		        </property>  
		        <property>  
		                <name>dfs.replication</name>  
		                <value>3</value>  
		        </property>  
		</configuration>  
		2. vim core-site.xml  
		<configuration>  
		        <property>  
		                <name>fs.default.name</name>  
		                <value>hdfs://node00:9000</value>  
		        </property>  
		        <property>  
		                <name>hadoop.tmp.dir</name>  
		                <value>/home/hadoop/hadoop-1.0.3/hddata/tmp</value>  
		        </property>  
		</configuration>  
		3 vim mapred-site.xml  
		<configuration>  
		        <property>  
		                <name>mapred.job.tracker</name>  
		                <value>node00:9001</value>  
		        </property>  
		        <property>  
		                <name>mapred.local.dir</name>  
		                <value>/home/hadoop/hadoop-1.0.3/hddata/localData</value>  
		        </property>  
		</configuration>  
		4. vim master  
		    node00  
		5. vim slaves  
		    node01  
		    node02  
		  
		3.3 同步到其他机器  
		1 cd /home/hadoop/  
		2 scp -r hadoop-1.0.3 hadoop@node01:~/  
		3 scp -r hadoop-1.0.3 hadoop@node02:~/  
		  
		3.4 启动namenode节点(即node00节点)  
		    cd /home/hadoop/hadoop-1.0.3  
		    bin/hadoop namenode -format  
		ps:这一步没有格式化hdfs文件系统成功的话,后面的就不用浪费时间了,一定要重写仔细检查下哪里配错了,再进行下去。另外,排除错误之后一定要把本次操作生产的那些临时文件删掉才能再次格式化。我这里配置在/home/hadoop/hadoop-1.0.3/hddata/dfs/data(即删除dfs文件夹)。  
		  
		3.5 检查hadoop启动是否成功  
		1.jps  
		    8379 JobTracker  
		    8290 SecondaryNameNode  
		    7943 NameNode  
		    14298 Jps  
		2.netstat -nl  
		  
		3.HDFS测试  
		Description:  
		hadoop环境启动成功,我们进行一下hdfs的简单测试。  
		通过命令在hdfs上面,创建一个目录bin/hadoop fs -mkdir /test  
		通过命令复制一个本地文件到hdfs文件系统中,bin/hadoop fs -copyFormLocal README.txt /test  
		通过命令查看刚刚上传的文件bin/hadoop fs -ls /test  
		代码部分:  
		node00:  
		    cd /home/hadoop/hadoop-1.0.3  
		    bin/hadoop fs -mkdir test  
		    bin/hadoop fs -copyFormLocal README.txt test  
		    bin/hadoop fs -ls test  
		    Found 1 items  
		        -rw-r--r--   2 hadoop supergroup       1366 2012-08-30 02:05 /test/README.txt  
		到这里,hadoop完全分布式安装就大功告成了!   |