一、Hadoop简介
Hadoop:一个分布式系统基础架构,适合大数据的分布式存储与计算平台。两个核心项目:HDFS、MapReduce
HDFS:分布式文件系统,主要解决分布式的存储问题。
MapReduce:并行计算框架,主要解决分布式的计算问题。
Hadoop的特点:高可靠、高扩展、高性能、高容错、低成本
Hadoop架构:
在MapReduce中一个准备提交的应用程序成为作业(job),从一个作业划分出的、运行于各计算节点的工作单位成为任务(task);
Hadoop提供的分布式文件系统(HDFS)主要负责各个节点上的数据存储,实现高吞吐率的数据读写。
Hadoop使用Master/Slave架构。
以HDFS角度看(一个文件会被分割成若干个默认64M的block):
主节点(只有一个): namenode。接受用户数据、维护文件系统的目录结构、管理文件与block和block与 datanode之间的关系。
从节点(若干个): datanode。存储block,为保证数据安全会有备份。
以MapReduce角度看:
主节点(只有一个): JobTracker。接受客户提交的服务任务、将任务分配给TaskTracker执行、监控 TaskTracker执行情况。
从节点(有很多个); TaskTracker。执行JobTracker分配的计算任务。
二、伪分布式部署Hadoop
安装虚拟机(网络设置为host-only)
设置静态IP(使宿主机与虚拟机位于同一网段)
修改主机名、绑定主机名与IP
修改主机名:配置文件位于/etc/sysconfig/network
绑定主机与IP:配置文件位于/etc/hosts
重启
关闭防火墙及自动启动
查看防火墙状态:service iptables status
关闭防火墙:service iptables stop
查看防火墙运行级别:chkconfig | grep iptables
关闭防火墙自动启动:chkconfig iptables off
配置SSH免密码登陆
以rsa加密算法产生密钥:ssh-keygen -t rsa(产生的密码位于~/.shh)
拷贝id_rsa.pub:cp id_rsa.pub authorized_keys
验证(免密码登陆本机):ssh locahost
安装JDK
复制JDK到安装目录(我选择安装到/usr/local/jdk。注意与JDK环境变量,Hadoop配置中的设置保持一致)
对JDK安装文件添加执行权限:chmod u+x jdk.....bin
解压缩:./jdk.....bin
重命名安装目录:mv jdk...... jdk
添加环境变量:配置文件位于/etc/profile
-
-
-
export JAVA_HOME=/usr/local/jdk
export PATH=.:$JAVA_HOME/bin:$PATH
-
-
-
更改立即生效:source /etc/profile
验证:java -version
安装Hadoop
复制hadoop安装包到安装目录
解压hadoop安装包:tar -zxvf hadoop.....tar.gz
重命名安装目录:mv hadoop..... hadoop
添加环境变量:配置文件位于/etc/profile
-
-
-
export HADOOP_HOME=/usr/local/hadoop
export PATH=.:$HADOOP_HOME/bin:$........(JDK环境变量)
-
-
-
修改Hadoop配置文件
配置文件位于:$HADOOP_HOME/config目录下
hadoop-env.sh(第九行去掉注释,改为):export JAVA_HOME=/usr/local/jdk/
core-site.xml(配置内容见文末)
hdfs-site.xml(配置内容见文末)
mapred-site.xml(配置内容见文末)
格式化namenode、启动Hadoop
格式化:hadoop namenode -format
启动hadoop:start-all.sh
验证查看JAVA进程:jps(应显示6个进程)
访问:http://hadoop:50070
访问:http://hadoop:50030
安装几点说明:
关闭windows下防火墙,避免网络访问的错误
登陆linux时以root身份登陆,避免权限问题
每一步设置完成后应及时验证,避免问题
JDK,HADOOP环境变量的配置中与自己安装路径保持一致
配置文件内的主机名与自己的主机名保持一致
禁止多次格式化namenode。若已经重复格式化,清空$HADOOP_HOME/tmp文件夹
HADOOP的配置文件内容如下:
core-site.xml(注意与自己的主机名保持一致)
fs.default.name hdfs://hadoop:9000 change your own hostname hadoop.tmp.dir /usr/local/hadoop/tmp
hdfs-site.xml
dfs.replication 1 dfs.permissions false
mapred-site.xml(注意与自己的主机名保持一致)
mapred.job.tracker hadoop:9001 change your own hostname
参考文献:
实战Hadoop:开启云计算的捷径(刘鹏)
百度百科(hadoop)以及其它来自互联网的资料