1、hadoop项目简介
hadoop核心项目:1)HDFS(分布式系统)2)MapReduce(并行计算框架)
(1)HDFS的体系结构:
	1)它是一个主从结构:
		主节点,只有一个,namenode
		从节点,有很多个,datanodes
	2)namenode的职责:
		11)接受用户请求
		22)维护文件系统的目录结构
		33)管理文件和block(块)之间关系,block(块)与datanode之间关系
	3)datanode的职责:
		11)存储文件
		22)文件被分成block(块)存储在磁盘上
		33)为保证数据安全,文件会有多个副本,一般是3个副本。 
相当于一个大的文件分成多个块,每个块一般为64M,每一个块分别存放在datanode上,而namenode维护每一块之间的关系和每一块和datanode之间的关系。从而构成一个整体。

(2)MapReduce的体系结构
	1)它也是一个主从式的结构
		主节点,只有一个,JobTracker
		从节点,有很多个,TaskTrackers
	2)JobTracker主要的职责:
		11)接受客户提交的计算任务
		22)把计算任务分配给TaskTracker执行
		33)监控TaskTracker的执行情况,及时返回结果
	3)TaskTrackers主要负责的任务
		11)执行JobTracker分配的计算任务

(3)hadoop的特点
	1)扩容能力:能可靠的存储和处理千兆字节的数据
	2)成本低:可以通过普通的机器组成的服务器群来分发以及处理数据。这些服务器群总计可达数千个节点
	3)高效率:通过分发数据,hadoop可以在数据所在的节点上并行地处理他们,这使得处理非常快速。
	4)可靠性:hadoop能自动的维护数据的多份副本,并且在任务失败后能自动地重新部署计算任务。

2、搭建hadoop的伪分布环境
(1)宿主机(window)和客户机(linux)网络连接方式
	1)host-only 宿主机与客户机单独组网

	2)bridge(桥连接) (客户机与宿主机在同一个局域网中)
	
(2)hadoop的伪分布安装步骤
	1)设置静态ip
		11)在centos桌面右上角的图标上,邮件修改。
		22)在控制台界面执行:service network restart 命令使得修改的ip地址生效
		33)执行ifconfig命令查看是否生效

	2)修改主机名,主机名类似域名一样的东西,因此每台机器都通过主机名来作为他的名字。
		11)查看主机名:hostname
		22)修改主机名:hostname 主机名   (此时修改时临时有效,要永久有效,则需要修改/etc/sysconfig/network配置文件,修改相应的名字即可)
		
	3)将上面修改后的主机名和对应的ip地址绑定
		修改/etc/hosts文件,即增加一行内容为:主机的ip地址 主机名
		验证就是ping一下主机名即可

	4)关闭防火墙
		service iptables status  查看防火墙
		service iptables stop   关闭防火墙 
	5)chkconfig --list 查看所有开启的服务,后面如跟on则表示该程序是开机自动启动的。为了想将防火墙彻底关闭,因此必须将开机自启动关闭。
		chkconfig --list |grep iptables 查看防火墙是否是开机自启动。  (grep表示过滤的意思)
		chkconfig iptables off 关闭防火墙的开机自启动功能。
	6)SSH(secure shell)【使用root用户登录】
		<1>执行命令 ssh-keygen -t rsa 产生密钥,位于~/.ssh文件夹中执行 ,-t rsa表明加密算法
		<2>执行命令 cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys     #注意~表示当前用户的主目录,即home目录,root用户就是/root下。
		验证:ssh localhost  免密码登录另一个用户。
		
		注意:如果是在安装分布式集群的时候,需要在每一个节点上都生成这个密钥,并且拷贝到相应的authorized_keys 文件中,最后需要制作一个公钥:就是所有节点上的authorized_keys 的内容合并成一个authorized_keys 。最后用这个公钥要替换所有节点的authorized_keys 。
		
		
		
		
	7)安装jdk。
		<1>执行rm -rf /usr/local/* 删除/usr/local/目录下所有内容。
		<2>使用ssh工具将jdk上传到linux中
		<3>给jdk安装文件授予执行权限:chmod 744 文件名
		<4>执行./jdk文件名。必须在usr/local/*中执行,否则在其他路径下执行找不到相应的文件。
		<5>修改文件名 mv jdk-8u  jdk
		<6>修改环境变量即修改 vi /etc/profile文件即可。在该文件夹中添加两行内容
			export JAVA_HOME=/usr/local/jdk 
			export PATH=.:$JAVA_HOME/bin:$PATH
		保存退出
		<7>执行 source /etc/profile 命令,让修改的环境变量立即生效
	8)安装hadoop
		<1>执行命令 tar -zxvf hadoop-1.1.2.tar.gz 进行解压缩
		<2>重命令hadoop1.1.2:mv hadoop1.1.2 hadoop
		<3>配置环境变量,即增加hadoop的环境变量,即在/etc/profile中增加一行
			export HADOOP_HOME=/hadoop/hadoop
			export PATH=.:$JAVA_HOME/bin:$PATH:$HADOOP_HOME/bin
			保存退出
		<4>执行 source /etc/profile 命令,让修改的环境变量立即生效
		<5>修改hadoop的配置文件,位于$HADOOP_HOME/conf目录下的四个文件,分别是:hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml。具体修改内容如下
			11)hadoop.sh文件
			export JAVA_HOME=/home/jdk   #jdk的安装路径  ,注意原文件中该行前面有一个#号,应该将它去掉
			22)core-site.xml文件    ///该文件就是指定namenode节点的安装位置,主机名就是指定安装位置。
			<configuration>
			   	<property>
					<name>fs.default.name</name>
					<value>hdfs://hadoop:9000</value>   #这里的hadoop0表示的是主机名,9000表示的是端口号,所以根基相应的主机名做相应的改动
					<description>change your own hostname</description>
				</property>
				<property>
					<name>hadoop.tmp.dir</name>
					<value>/hadoop/hadoop/tmp</value>  #这里填写hadoop的安装路径加/tmp
				</property>
			</configuration>
			33)hdfs-site.xml文件
			<configuration>
			   	<property>
					<name>dfs.replication</name>
					<value>1</value>    #指定存储副本的个数
				</property>
				<property>
					<name>dfs.permissions</name>
					<value>false</value>  #这里填写hadoop的安装路径加/tmp
				</property>
			</configuration>
			44)mapred-site.xml文件
			<configuration>
			   	<property>
					<name>mapred.job.tracker</name>
					<value>hadoop:9001</value>  #这里的hadoop0表示的是主机名,9000表示的是端口号,所以根基相应的主机名做相应的改动
				</property>
			</configuration>
					
		注意:上面四个文件是在伪分布下修改的,若需要设置完全分布模式的话,还需要修改两个文件:一个是masters和slves文件。
		masters主要是添加安装namenode和jobtracker节点的主机名
		slves主要是添加安装datanode和tasktracker节点的主机名
		
		还有,在完全分布式中,如果六个文件都修改好了,就将hadoop拷贝到所有的节点中,采用scp -r /hadoop h1:/home/grid  -----> 表示将hadoop的文件夹递归的拷贝到h1节点的home/grid的目录路下

		<6>执行命令 hadoop namenode -format 对hadoop进行格式化   #这里需要注意可能会出现一个错误:
			
		<7>执行命令 start-all.sh启动hadoop

		验证是否启动了hadoop:(1)执行命令jps会发现启动了5个java进程,分别是:JobTracker,NameNode,TaskTracker,DataNode,SecondaryNameNode
					(2)通过linux浏览器输入网址:hadoop:50070可以看到Namenode相应的界面。
					(3)通过linux浏览器输入网址:hadoop:50030可以看到Mapreduce相应的界面。
					(4)windows主机浏览的话可以设置C:\windows\System32\drivers\etc\hosts文件,增加一个 linux虚拟机的ip 主机名 即可。
		<8>一般没有成功会出现的问题:namenode进程没有启动成功?(1)有可能是没有格式化,(2)也有可能配置文件修改的问题。(3)hostname与ip没有绑定(4)ssh的免密码登录没有配置成功
		<9>也有可能多次格式化hadoop也可能引起错误?解决方式是	:删除hadoop安装目录下的/tmp文件夹,重新格式化即可。		
			
3、使用eclipse查看hadoop源码