hadoop是什么?
What Is Apache Hadoop?
The Apache Hadoop project develops open-source softwarefor reliable, scalable, distributed computing.
解决问题:
海量数据的存储(HDFS)
海量数据的分析(MapReduce)
作者:Doug Cutting
受Google三篇论文的启发(GFS、MapReduce、BigTable)
hadoop核心
HDFS: Hadoop Distributed FileSystem 分布式文件系统
MapReduce:并行计算框架
怎样解决海量数据的存储?
HDFS的架构
主从结构
主节点,只有一个: namenode
从节点,有很多个: datanodes
namenode负责:
接收用户操作请求
维护文件系统的目录结构
管理文件与block之间关系,block与datanode之间关系
datanode负责:
存储文件
文件被分成block存储在磁盘上
为保证数据安全,文件会有多个副本
MapReduce的架构
主从结构
主节点,只有一个: JobTracker
从节点,有很多个: TaskTrackers
JobTracker负责:
接收客户提交的计算任务
把计算任务分给TaskTrackers执行
监控TaskTracker的执行情况
TaskTrackers负责:
执行JobTracker分配的计算任务
Hadoop的特点
扩容能力(Scalable):能可靠地(reliably)存储和处理千兆字节(PB)数据。
成本低(Economical):可以通过普通机器组成的服务器群来分发以及处理数据。这些服务器群总计可达数千个节点。
高效率(Efficient):通过分发数据,hadoop可以在数据所在的节点上并行地(parallel)处理它们,这使得处理非常的快速。
可靠性(Reliable):hadoop能自动地维护数据的多份副本,并且在任务失败后能自动地重新部署(redeploy)计算任务。
Hadoop集群的物理分布
单节点物理结构
Hadoop部署方式
本地模式
伪分布模式
集群模式
在虚拟机上部署伪分布模式Hadoop
软件:vmware9、CentOS6.x、hadoop-1.1.2.tar.gz、jdk-6u45-linux-i586.bin、SecureCRT
1、安装vmware9,并安装虚拟机CentOS
2、配置Linux环境
2.1、虚拟机选择Host-only方式连接,虚拟机的IP与虚拟网卡VMwareNetworkAdapterVMnet1配置在同一网段,这样虚拟机可以和主机通信。
如下:
DEVICE=eth0
BOOTPROTO=static
HWADDR=00:0c:29:bf:45:8b
IPV6INIT=yes
NM_CONTROLLED=yes
ONBOOT=yes
TYPE=Ethernet
UUID="99339c27-0884-46c0-85d5-2612e5c1f149"
IPADDR=192.168.232.129
NETMASK=255.255.255.0
DNS2=8.8.4.4
GATEWAY=192.168.232.1
DNS1=8.8.8.8
USERCTL=no
2.2、修改主机名
vi /etc/sysconfig/network
我将主机名修改为hadooptest
2.3、修改主机名和IP的映射关系
vi /etc/hosts
添加一行 192.168.232.129 hadooptest
有些版本的Linux只需修改/etc/hosts文件即可,2.2步不需要操作
2.4、关闭防火墙
service iptables status
service iptables stop
设置防火墙开机不启动
chkconfig iptables --list
chkconfig iptables off
3、安装JDK
3.1、上传jdk并修改权限,使之可执行
使用ftp工具上传,
修改权限:chmod 777 jdk-6u45-linux-i586.bin
.bin文件为自解压格式文件,执行就会解压到当前目录下
#./jdk-6u45-linux-i586.bin
将解压出来的文件夹jdk1.6.0_45移动到/usr/local/下
#mv /usr/local/jdk1.6.0_45 /usr/local/
3.2、配置环境变量
修改/etc/profile文件,在末尾添加
export JAVA_HOME=/usr/local/jdk1.6.0_45
export PATH=$PATH:$JAVA_HOME/bin
添加完之后,运行命令#source /etc/profile,来进行刷新
4、安装Hadoop
4.1、上传并解压到指定路径
在跟路径下新建一个cloud文件夹:#mkdir /cloud
将hadoop-1.1.2.tar.gz解压到/cloud下:#tar -zxvf hadoop-1.1.2.tar.gz -C /cloud/
4.2、修改Hadoop的4个配置文件
第一个:hadoop-env.sh
export JAVA_HOME=/usr/local/jdk1.6.0_45
第二个:core-site.xml
<configuration>
<!-- 指定hdfs的老大namenode的地址 -->
<property>
<name>fs.default.name</name>
<value>hdfs://hadooptest:9000</value>
</property>
<!-- 指定hadoop运行时产生的文件的位置 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/cloud/hadoop-1.1.2/tmp</value>
</property>
</configuration>
第三个:hdfs-site.xml
<configuration>
<!-- 指定HDFS副本的数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
第四个:mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>hadooptest:9001</value>
</property>
</configuration>
4.3、将Hadoop添加到环境变量
#vi /etc/profile
export JAVA_HOME=/usr/local/jdk1.6.0_45
export HADOOP_HOME=/cloud/hadoop-1.1.2
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin
5、格式化HDFS
#hadoop namenode -format
6、启动hadoop
#start-all.sh
7、验证集群是否启动成功
#jps (jps命令的意思是查看java进程,ps的意思是查看所有进程)
jps(不包括jps应该有5个)
NameNode
SecondaryNameNode
DataNode
JobTracker
TaskTracker
还可以通过浏览器的方式验证
http://192.168.232.129:50070 (hdfs管理界面)
http://192.168.232.129:50030 (mr管理界面)
在这个文件中添加linux主机名和IP的映射关系
C:\Windows\System32\drivers\etc\hosts
192.168.232.129 hadooptest
8、配置ssh免登陆
#ssh-keygen -t rsa
#ssh-coyp-id -i localhost(强烈建议)
或
#cat ~/.ssh/id_rsa.put >> ~/.ssh/authorized_keys
ssh免登陆原理
9、去除启动或者运行命令时的警告
与HADOOP_HOME有关