最近学习搭建hadoop,通过边查资料边搭建,花了半天也搭建好了,借此写下搭建总结,在这里感谢博友【数据放大镜】的文章,很不错,就是按照他的步骤搭建下来的,在这里,自己完善了一下,不说了,直接开搞:Ps:由于自己的本本配置略差,所以只装了3个虚拟机


1:工具列表 Linux 这里使用的是:CentOS 6.5 Hadoop 这里使用的是:hadoop-1.2.1-bin.tar.gz JDK 这里使用的是:jdk-8u172-linux-x64.tar.gz


2:通过VMware装3个Linux系统的虚拟机,这里就不做介绍了(这里使用的是CentOS 6.5版本) 装好系统以后,下面的步骤建议在root用户下操作


3 :配置网络 将3台机器的IP配置成固定IP, 网络设置成NET方式

		配置固定IP
		cd  /etc/sysconfig/network-scripts;  vi  ifcfg-eth0
		
		DEVICE="eth7"
  BOOTPROTO="static"        #这里是设置固定IP模式的: static固定,  DHCP自动获取#
  HWADDR="00:0C:29:2A:0E:89"
  IPV6INIT="yes"
  NM_CONTROLLED="yes"
  ONBOOT="yes"
  TYPE="Ethernet"
  UUID="8ffaa06d-8057-43a1-bb93-1302400da0b9"
  IPADDR=192.168.183.130      #这里是设置IP
  GATEWAY=192.168.183.2      #网关
		
		我这里设置的是192.168.183.130(父)
		     其他两个环境分别设置成: 192.168.183.128(子)
		                                                      192.168.183.129(子)
		                             
 设置虚拟机登录方式:(这里我个人设置的NET连接方式,其他的应该也可以,可以尝试一下)
	 
	 NET联网设置
	 虚拟机(编辑----.>虚拟网络编辑器),选择NET模式     下面的子网IP  设置成 192.168.183.0    进入NET设置,里面将网关设置成192.168.183.2
	 
	 然后进入自己本机的网络设置页面: 打开网络与共享中心----->更改适配器设置------>  进入VMware Network Adapter VMnet8的属性IPv4设置  
	  默认网关设置成192.168.183.2
		
		然后重启虚拟机的网络连接(虚拟机右下角的电脑图标,断开连接,再重新连接)
		虚拟机的设置里面    设置--->硬件-----> 网络适配器-----> 网络连接(选择自定义,复选VMnet8(NET模式))
		重启虚拟机

4:配置hostname 和 免密互相访问

  配置hostname  
		cd   /etc;    vi  hosts
		
		在文件内容下面追加
		192.168.183.130 blue
  192.168.183.129 blue2
  192.168.183.128 blue3
   
		 注: 要对3个环境分别修改操作
		 
		 配置network文件
		 
		 cd  /etc/sysconfig ;  vi  network 
		 编辑network的值,分别修改成blue    blue2    blue3
		 
		 
		 重启虚拟机,执行hostname   命令,会发现hostname修改成功了
		 
     设置免密互相访问
		 
		 生成秘钥key
		 首先建立目录:   mkdir  /root/.ssh
		 执行命令    ssh-keygen     (过程中出现需要确认情况,直接回车跳过----这些确认步骤是提示设置密码的)
		 执行结束后会在  /root/.ssh 目录下生成2个文件   id_rsa    id_rsa.pub
		 不通的机器生成的文件内容不同:
		 比如:
		 192.168.183.130环境生成的 id_rsa.pub:
		 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxxuQrPBqE09NVjfHbquem5abgu7htljA7bNddQsAP/7wuko7dy6JC5lc1+oant4TrDSu+QTEEMt4anIyp3dk2FAP1FrSlyZvioC0oPhcAfXlVUe/WOLaoVsXvXc7BaRx/DVeWBoadYoVN/zb/jrgBiVSN0mklawrZou+GkNs0I2EtOL8URx6ZGO5H5pyfy8tZeebCoE2BgMw7nZBHccnL1InCc38Hpn90cyu5vA9xNT0Akp1npCGKmLYMkoWnCdSqPwwM69ZkRHAo4gL/0ZeyAkPzSa6cyFAQa40wTxq5ye8M2eCGBmjhKhauRgyo8SdN7A9sJ63FXMGCJkzI48aIw== root@blue

		 192.168.183.128环境生成的 id_rsa.pub:
		 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAucpajUU3o6XCk6V6JxPT7fgUDJ7Cw/tItDEFB9EMDSoCfua+tARPUdickq6qdqcrzE0JS2sB1Clil4p8nO7DL0HPQwK4ER3CEzXUDB9uoUeuDKNDpRHJFZvvDHs1Lqo+OPMZ6hbWVGh1DE+yFLOKBQ3DtbfGYZhePXryqhh/W2FrI/3LjT1DLSTckGa7ZgqaPh5t4YmktpLGzue3KjWzRAb2BPdKqgK5f67w5RSv4s3ttZbAMOGebg/PNdl9M77oSX7HsMIDkvbkogIZDHV+2LWIyHpaCAvBNDzHQd/67+XlRH1GJummFQjFrl3wJ1epJFl2rPhZjmT+37CCnMUbAQ== root@blue3
		 192.168.183.129环境生成的 id_rsa.pub:
		 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAzkKeSoDQx9AnAKkBoygiWLH25Pp6GlwjaqqG9LnbCwif5LcUX4N2mfWyXrgpJ3C5PB0r4xq7T776U1Q+VUj43/JEBmlFzpzIiQt0k0yB10mzDVdJwHSWspjQGNkCsiCF9gnuUpcxU5QO0J9gCvJhgfoK6mbVM+xBjF3B5pBaIdnSLZJTqlAlG62SH+kOQQWjkhiFzrxJdfViAcq4Leyg5WP+rBs7tKXysmwnFtpbn6Tok4V+p3VGFqg9/p8OB2HwWokHPV/ZISGbo4G6UpEtYp2hfcLJyo8JjJ1LCDszMyyvIrAZwo/wm6HCNuQU5kG4glghpUrhIEwPqivTeKq4eQ== root@blue2
		 
		 将id_rsa.pub写入authorized_keys    
		 在父节点执行命令:  cat id_rsa.pub > authorized_keys
		 然后将子节点的id_rsa.pub 文件追加到authorized_keys,最后追加后的内容的root 改成blue.  最终的authorized_keys文件内容为:
		 
		 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxxuQrPBqE09NVjfHbquem5abgu7htljA7bNddQsAP/7wuko7dy6JC5lc1+oant4TrDSu+QTEEMt4anIyp3dk2FAP1FrSlyZvioC0oPhcAfXlVUe/WOLaoVsXvXc7BaRx/DVeWBoadYoVN/zb/jrgBiVSN0mklawrZou+GkNs0I2EtOL8URx6ZGO5H5pyfy8tZeebCoE2BgMw7nZBHccnL1InCc38Hpn90cyu5vA9xNT0Akp1npCGKmLYMkoWnCdSqPwwM69ZkRHAo4gL/0ZeyAkPzSa6cyFAQa40wTxq5ye8M2eCGBmjhKhauRgyo8SdN7A9sJ63FXMGCJkzI48aIw== root@blue

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAzkKeSoDQx9AnAKkBoygiWLH25Pp6GlwjaqqG9LnbCwif5LcUX4N2mfWyXrgpJ3C5PB0r4xq7T776U1Q+VUj43/JEBmlFzpzIiQt0k0yB10mzDVdJwHSWspjQGNkCsiCF9gnuUpcxU5QO0J9gCvJhgfoK6mbVM+xBjF3B5pBaIdnSLZJTqlAlG62SH+kOQQWjkhiFzrxJdfViAcq4Leyg5WP+rBs7tKXysmwnFtpbn6Tok4V+p3VGFqg9/p8OB2HwWokHPV/ZISGbo4G6UpEtYp2hfcLJyo8JjJ1LCDszMyyvIrAZwo/wm6HCNuQU5kG4glghpUrhIEwPqivTeKq4eQ== blue@blue2 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAucpajUU3o6XCk6V6JxPT7fgUDJ7Cw/tItDEFB9EMDSoCfua+tARPUdickq6qdqcrzE0JS2sB1Clil4p8nO7DL0HPQwK4ER3CEzXUDB9uoUeuDKNDpRHJFZvvDHs1Lqo+OPMZ6hbWVGh1DE+yFLOKBQ3DtbfGYZhePXryqhh/W2FrI/3LjT1DLSTckGa7ZgqaPh5t4YmktpLGzue3KjWzRAb2BPdKqgK5f67w5RSv4s3ttZbAMOGebg/PNdl9M77oSX7HsMIDkvbkogIZDHV+2LWIyHpaCAvBNDzHQd/67+XlRH1GJummFQjFrl3wJ1epJFl2rPhZjmT+37CCnMUbAQ== blue@blue3

将authorized_keys 文件分发到2个子节点: 在父节点执行命令: scp –r authorized_keys 192.168.183.128:~/.ssh scp –r authorized_keys 192.168.183.129:~/.ssh

该步骤结束后,会发现三个环境可以可以免密互相访问了


5: 配置安装Hadoop (中间需要安装JDK,配置环境变量)

首先对环境进项配置:
	关闭3个环境的防火墙
	命令:  service  iptables  stop
	查看状态:  service  iptables  status  
   出现这种提示:iptables: Firewall is not running. 表明防火墙已经关闭	
 或者执行   iptables   -L
 出现下面的这种提示,也表明防火墙已经关闭
 Chain INPUT (policy ACCEPT)

target prot opt source destination

Chain FORWARD (policy ACCEPT) target prot opt source destination

Chain OUTPUT (policy ACCEPT) target prot opt source destination


 安装JDK(我这里使用的是jdk-8u172-linux-x64.tar.gz):将下载好的软件包解压到指定目录: (这里的目录是  安装部署目录为 /usr/local/src)
 
 tar  -zxvf   jdk-8u172-linux-x64.tar.gz
 解压后当前目录下生成  jdk1.8.0_172目录
 
 配置环境变量:  
 vi   /root/.bashrc
 在文件中追加内容:
 #set java path

export JAVA_HOME=/usr/local/src/jdk1.8.0_172 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin/:$PATH

然后让环境变量生效 source .bashrc

执行命令: java 可以查看环境变量是否生效。

按照相同的方法在其他两个环境中分别安装JDK,配置环境变量。

********************************************************************************************************************************************************************************************

 安装Hadoop软件(我这里使用的是hadoop-1.2.1-bin.tar.gz):  将下载好的软件包解压到指定目录:(这里的目录是  安装部署目录为 /usr/local/src)
 解压包
 
 tar  -zxvf  hadoop-1.2.1-bin.tar.gz 

对解压后的目录 hadoop-1.2.1 进行修改 mv hadoop-1.2.1 hadoop (也可以不修改,只要保证这个目录名跟下面的配置文件的目录名保持一致就OK,只是笔者有强迫症)

修改Hadoop工具配置文件: cd /usr/local/src/hadoop/conf; 修改的配置文件有6个 分别为 masters slaves core-site.xml mapred-site.xml hdfs-site.xml hadoop-env.sh

 开始配置:
 vi  masters
 将内容修改成:
 blue
 
 +++++++++++++++++++++++++++++++
 
 vi  slaves
 将内容修改成
 blue2
 blue3
 
 +++++++++++++++++++++++++++++++
 
 vi  core-site.xml
补充configuration内的内容
修改后的文件内容
<!-- Put site-specific property overrides in this file. -->

<configuration> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/src/hadoop/tmp</value> </property> <property> <name>fs.default.name</name> <value>hdfs://192.168.183.130:9000</value> </property> </configuration>

+++++++++++++++++++++++++++++++++++

vi mapred-site.xml 补充configuration内的内容 修改后的文件内容 <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>mapred.job.tracker</name> <value>http://192.168.183.130:9001</value> </property> </configuration>

++++++++++++++++++++++++++++++++++

vi hdfs-site.xml 补充configuration内的内容 修改后的文件内容 <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>dfs.replication</name> <value>3</value> </property> </configuration>

++++++++++++++++++++++++++++++++++++++

vi hadoop-env.sh 在配置文件中追加一行内容: export JAVA_HOME= /usr/local/src/jdk1.8.0_172

+++++++++++++++++++++++++++++++++++++++++++

配置完成后将Hadoop目录分发到其他两个环境: scp -rp /usr/local/src/hadoop 192.168.183.128:/usr/local/src scp -rp /usr/local/src/hadoop 192.168.183.129:/usr/local/src

再次检查防火墙状态: service iptables status

启动Hadoop 启动之前需要格式换节点(以下操作均在父节点操作):

cd hadoop/bin ; ./hadoop namenode -format

输出: 18/05/13 06:32:14 INFO namenode.NameNode: STARTUP_MSG: /************************************************************ STARTUP_MSG: Starting NameNode STARTUP_MSG: host = blue/192.168.183.130 STARTUP_MSG: args = [-format] STARTUP_MSG: version = 1.2.1 STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.2 -r 1503152; compiled by 'mattf' on Mon Jul 22 15:23:09 PDT 2013 STARTUP_MSG: java = 1.8.0_172 / Re-format filesystem in /usr/local/src/hadoop/tmp/dfs/name ? (Y or N) y Format aborted in /usr/local/src/hadoop/tmp/dfs/name 18/05/13 06:32:20 INFO namenode.NameNode: SHUTDOWN_MSG: / SHUTDOWN_MSG: Shutting down NameNode at blue/192.168.183.130 ************************************************************/


启动Hadoop ./start-all.sh 输出: starting namenode, logging to /usr/local/src/hadoop/libexec/../logs/hadoop-root-namenode-blue.out blue3: starting datanode, logging to /usr/local/src/hadoop/libexec/../logs/hadoop-root-datanode-blue3.out blue2: starting datanode, logging to /usr/local/src/hadoop/libexec/../logs/hadoop-root-datanode-blue2.out blue: starting secondarynamenode, logging to /usr/local/src/hadoop/libexec/../logs/hadoop-root-secondarynamenode-blue.out starting jobtracker, logging to /usr/local/src/hadoop/libexec/../logs/hadoop-root-jobtracker-blue.out blue2: starting tasktracker, logging to /usr/local/src/hadoop/libexec/../logs/hadoop-root-tasktracker-blue2.out blue3: starting tasktracker, logging to /usr/local/src/hadoop/libexec/../logs/hadoop-root-tasktracker-blue3.out


执行命令:
jps 输出: 3889 SecondaryNameNode 4194 Jps 3971 JobTracker 3740 NameNode


在2个子节点执行命令: jps 分别输出: 3859 DataNode 3932 TaskTracker 4030 Jps

2998 TaskTracker 3096 Jps 2925 DataNode 这就表示搭建配置成功了。


如果执行jps的时候出现: bash:jps:command not found 表示环境变量的问题,检查一下环境变量设置