实施Hadoop集群
--伪分布式安装
准备与配置安装环境
安装虚拟机和linux,虚拟机推荐使用vmware,PC可以使用workstation,服务器可以使用ESXi,在管理上比较方便。ESXi还可以通过拷贝镜像文件复制虚拟机,复制后自动修改网卡号和ip,非常快捷。如果只是实验用途,硬盘大约预留20-30G空间。
以Centos为例,分区可以选择默认[如果想要手动分区,请参考博客:http://blog.csdn.net/zjf280441589/article/details/17548525],安装选项选择Desktop Gnome,以及Server、Server GUI即可。其它Linux,注意选项里应包括ssh,vi(用于编辑配置文件),perl等(有些脚本里包含perl代码需要解析)
推荐使用Oracle自家的jdk,请到Oracle官网下载java jdk安装包,并且进行安装
三种运行模式
单机模式:安装简单,几乎不用作任何配置,用处不大,仅限于调试用途
伪分布模式:在单节点上同时启动namenode、datanode、jobtracker、tasktracker、secondary namenode等5个进程,模拟分布式运行的各个节点.
[伪分布式还是运行在单节点上面,但完全分布式的安装步骤与伪分布式几乎一模一样,仅有几个步骤稍作修改]
完全分布式模式:真正的Hadoop集群,由多个各司其职的节点构成[要求至少有3个结点:一台Master,安装NameNode,JobTracker;两台Slave,安装DataNode,TaskTracker].
伪分布式模式的安装和配置Hadoop步骤
1. 下载Hadoop安装包,下载网址如下
http://mirror.bit.edu.cn/apache/hadoop/common/
2. 解压Hadoop安装包
tar -xzvf hadoop-x.y.z.tar.gz mv hadoop-x.y.z.tar.gz hadoop #为了便于以后使用,重命名
[tar命令详细说明请参考:
http://blog.csdn.net/zjf280441589/article/details/17653615]
3. 编辑/etc/profile文件,设置环境变量
a) 增加一行
export HADOOP_HOME=/usr/local/hadoop
b) 修改一行
export PATH=.:$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATH
c) 执行命令source /etc/profile 使得设置立即执行
_____________________________________________________________________________________________________________________
修改Hadoop配置文件:位于$HADOOP_HOME/conf目录下的四个文件,hadoop-env.sh,core-site.xml,hdfs-site.xml,mapred-site.xml
1. 进入Hadoop的解压目录,编辑conf/hadoop-env.sh文件(注意0.23版后配置文件的位置有所变化),一般在第九行,修改为:
export JAVA_HOME=/usr/local/jdk/
[附:Hadoop有关配置文件]
1. 编辑conf目录下core-site.xml[对Hadoop进行核心配置的文件]、hdfs-site.xml[配置HDFS系统]和mapred-site.xml[配置Map-Reduce]三个核心配置文件
a) 配置core-site.xml文件
常见配置参数: fs.default.name NameNode的IP地址和端口
具体修改意见:将<configuration>与</configuration>之间的内容修改为[9000为工作端口]:
<configuration> <property> <name>fs.default.name</name> <value>hdfs://hadoop:9000</value> <description>change your own hostname</description> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/local/hadoop/tmp</value> </property> </configuration>
注意:如果以后做完全分布式安装,切记将hadoop0位置改为NameNode真实的IP地址(或者是已经绑定了的主机名).如果是伪分布式安装,其实直接写成localhost即可.
b)配置hdfs-site.xml文件
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.permissions</name> <value>false</value> </property> </configuration>
说明:dfs.replication用以设置在分布式文件系统中将数据块复制多少份
[附:hdfs-site.xml文件中常用配置参数]
C)修改mapred-site.xml文件
<configuration> <property> <name>mapred.job.tracker</name> <value>hadoop:9001</value> <description>change your own hostname</description> </property> </configuration>
说明:mapred.job.tracker,配置Hadoop作业跟踪器JobTracker所在位置,9001为Hadoop常用的缺省端口;如果是完全分布式安装,则一定要将hadoop0给修改了(类似core-site.xml文件),一定!
[附:mapred-site.xml文件中常用配置参数]
1. 格式化HDFS
执行hadoop namenode -format命令进行格式化
2. 启动Hadoop
使用start-all.sh启动Hadoop[5个starting]
3. 验证Hadoop启动
a) 使用jps查看Java进程
b) 使用Linux浏览器进行验证,在地址栏输入:
查看NameNode,DataNode详细信息
查看JobTracker,TaskTracker详细信息
c) 使用Windows(宿主机)浏览器访问
i. 进入C:\Windows\System32\drivers\etc,编辑hosts文件
ii. 添加一行:
192.168.20.100 hadoop #192.168.20.100为虚拟机内Linux IP地址
iii.即可访问
访问方法同上
4. 可以使用stop-all.sh关闭Hadoop
去除hadoop的启动过程中警告信息
1.编辑/etc/profile文件,添加一行:
export HADOOP_HOME_WARN_SUPPRESS=1
2.执行source /etc/profile立即生效
Hadoop安装期间的常见错误
1. HDFS没有格式化
2. 配置文件只copy,没有做修改
3. Hostname与IP没有绑定
4. SSH免密码登录没有配置成功
5. 多次格式化HDFS
解决方法:删除/usr/local/hadoop/tmp文件夹,重新格式化
SSH原理
客户端向服务器端发出连接请求,服务器端向客户端发出自己的公钥,客户端使用服务器端的公钥加密通讯密钥然后发给服务器端,如果通讯过程被截获,由于窃听者即使获知公钥和经过公钥加密的内容,但不拥有私钥依然无法解密(RSA算法),服务器端接收到密文后,用私钥解密,获知通讯密钥,ssh-keygen命令给服务器端产生公私钥密钥对,cp命令将服务器端公钥复制到客户端(注意在伪分布模式下服务器端和客户端是同一台机器),因此客户端本身就拥有了服务器端公钥,可以直接进行免密码接入.
Hadoop目录结构
docs目录:有关于Hadoop的详细说明信息
bin目录:Hadoop的执行命令
conf目录:Hadoop的配置文件
src目录:Hadoop的源代码,其中含有的.xml文件,有关于Hadoop conf目录下的配置文件的详细说明信息,如hdfs-site.xml,mapred-site.xml等
Hadoop学习笔记_4_实施Hadoop集群 --伪分布式安装