在各环境中新建用户easadmin 密码easadmin
服务器安装JDK
rpm -ivh jdk-7u40-linux-x64.rpm
hadoop0.23.11配置文件路径
/root/Music/hadoop-0.23.11/share/hadoop/common/templates/conf
一、实现各服务器之间SSH免密码登录;
二、安装JDK,此次使用的是 jdk-7u40-linux-x64.rpm,具体安装如下;实现SSH免密码登录,主要是按如下步骤:先确定NameNode主节点服务器,然后在这台服务器上进行操作。1) cd ~ls -al查看是否有 .ssh目录,如果没有就新建一个: mkdir .ssh注:由于.ssh目录一般情况下是隐藏的文件夹,所以要用: ls -al才能全部显示2)配置可以免密码登陆本机在命令行输入(注意其中的ssh前面还有一个“.”不要遗漏)cd ~/.sshssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa(解释一下上面这条命令, ssh-keygen 代表生成密钥;-t 表示指定生成的密钥类型;dsa 是dsa密钥认证的意 思;-P 用于提供密语(接着后面是两个单引号,不要打错);-f 表示指定生成密钥文件)这条命令完成后,会在当前文件夹下面的.ssh文件夹下创建id_dsa和id_dsa.pub两个文件,这是SSH的一对私 钥和公钥,把id_dsa.pub(公钥)追加到授权的key中去,输入如下命令:cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys3)测试是否配置成功ssh localhost如果配置成功,那么这条命令执行完成之后,会直接登录到机器,否则会提示输入密码。注意:确保.ssh文件权限700,authorized_keys文件权限600。
之后要把主节点上面的公钥添加到其他节点的: ~/.ssh/authorized_keys文件中
1、
在jdk-7u40-linux-x64.rpm目录下执行命令:
#rpm -ivh jdk-7u40-linux-x64.rpm
2、配置环境变量,
#export JAVA_HOME=/usr/java/jdk1.7.0_40
安装完成后可以使用
#java -version命令进行查看当前系统JDK版本,
使用
#echo ${JAVA_HOME}查看java_home环境变量的配置。
三、所有的节点都修改/etc/hosts,使彼此之间都能把主机名解析为ip
#cd /退出到根目录
#cd etc/ 进入到etc目录
#vi hosts查看hosts文件,按
i 进入编辑模式,然后按照下图添加对应的地址;添加完成后按
esc键,然后输入
:wq保存进行退出,使用
#vi hosts可以验证是否保存成功。(如果编辑错了,可以按esa然后输入
:q!取消修改进行退出)
如果完成第一步无密码登录的话,可以使用 ssh dataNode1看看是否可以成功登录到dataNode1服务器上。登录后可以使用
#exit命令退回到原服务器上。
四、下载hadoop
下载地址:
http://hadoop.apache.org/releases.html#Download
(此次使用的是 hadoop-1.2.1.tar.gz)
五、安装和配置hadoop
将hadoop-1.2.1.tar.gz上传到nameNode服务器的u01文件下,然后进行使用
[
root@localhost u01]#
tar -zxvf hadoop-1.2.1.tar.gz 命令进行解压
下面就是配置的关键时候(可以现在nameNode服务器上进行修改,然后在将hadoop解压的文件复制到其他节点上):
1、修改hadoop-env.sh文件中的JAVA_HOME指向我们自己安装的JDK路径
[ root@localhost u01]# cd hadoop-1.2.1/conf/ 进入配置文件中;[ root@localhost conf]# vi hadoop-env.sh 查看文件,然后按 i 进行编辑模式;去掉#,然后把JAVA_HOME修改为我们自己的JAVA_HOME地址 ( /usr/java/jdk1.7.0_40),然后按esc键退出, :wq保存退出
2、修改hdfs-site.xml文件,指定数据副本的个数;
1)在各个服务器节点新建文件
[
root@localhost u01]# mkdir hadoop_data 新建文件夹,用于存放数据;
2)
[
root@localhost conf]#
vi hdfs-site.xml 查看文件,然后按
i 进行编辑模式;
<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!-- Put site-specific property overrides in this file. --><configuration><property><name>dfs.replication</name><value>2</value><description>DataNode</description></property><property><name>dfs.namenode.name.dir</name><value>/u01/hadoop_data</value><description>Determines where on the local filesystem the DFS name nodeshould store the name table. If this is a comma-delimited listof directories then the name table is replicated in all of thedirectories, for redundancy. </description><final>true</final></property><property><name>dfs.datanode.data.dir</name><value>/u01/hadoop_data</value><description>Determines where on the local filesystem an DFS data nodeshould store its blocks. If this is a comma-delimitedlist of directories, then data will be stored in all nameddirectories, typically on different devices.Directories that do not exist are ignored.</description><final>true</final></property></configuration>输入以上内容,然后按esc键退出, :wq保存退出[ root@localhost conf]# cat hdfs-site.xml 验证是否保存成功/*
配置文件说明:dfs.namenode.name.dir存储名字空间及汇报日志的位置,dfs.datanode.data.dir DataNode存储数据块的位置
*/
3、修改core-site.xml文件,指定nameNode服务器;
[
root@localhost conf]#
vi core-site.xml 查看文件,然后按
i 进行编辑模式;
<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!-- Put site-specific property overrides in this file. --><configuration><property><name>fs.default.name</name><value>hdfs://192.168.67.41:9000</value><description>Master Node</description></property><property><name>hadoop.tmp.dir</name><value>/u01/hadoop_data/hadoop-${user.name}</value><description>A base for other temporary directories.</description></property></configuration>
hadoop.tmp.dir 主要是制定文件格式化后临时文件的保存路径,默认保存的路径为
/tmp/hadoop-javoft/dfs,但每次服务器重新启动时都会清空默认路劲下面的文件,所以最好修改下该路径
4、修改mapred-site.xml文件,指明MapReduce的JobTracker的主机;
[ root@localhost6 conf]# cat mapred-site.xml<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>192.168.67.41:9001</value>
<description>JobTracker</description>
</property>
</configuration>
5、修改
masters 和 slaves 文件
Hadoop conf 下的 masters 和 slaves 文件的作用是什么?
从字面意思上来看,masters 是主要的,应该记录的是 namenode 的 IP 或者是域名。但是文件的名称确实有点误导人,
它主要记录运行辅助 namenode 的所有机器
。slaves 文件记录了运行 datanode 和 tasktracker 的所有机器。用户也可以改变 hadoop-env.sh 的 HADOOP_SLAVES 项的值,将 slaves 文件放在其他地方。这两个文件无需分发到各个工作节点,因为只有运行在 namenode 或 jobtracker 上的控制脚本能使用这些文件。不过,分发了也不会有什么影响。
因为此次无辅助的nameNode服务器,所以无需配置masters文件,只需配置slaves文件即可;
6、复制hadoop文件到各个节点
配置完成后将hadoop文件复制到各个服务器节点上。
[
root@localhost u01]#
scp -r hadoop-1.2.1 root@dataNode2:/u01
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
六、格式化分布式文件系统
进入bin目录,执行命令进行格式化[ root@localhost hadoop-1.2.1]# cd bin[ root@localhost bin]# ./hadoop namenode -format
貌似启动有些问题,晕菜,自己没有将hadoop复制到其他服务器节点,[ root@localhost u01]# scp -r hadoop-1.2.1 root@dataNode1:/u01[ root@localhost u01]# scp -r hadoop-1.2.1 root@dataNode2:/u01
复制完成后继续启动
验证是否启动成功
1)检测守护进程启动情况
[
root@localhost bin]#
ls /usr/java/jdk1.7.0_40/bin
[
root@localhost bin]#
/usr/java/jdk1.7.0_40/bin/jps 查看JAVA相关的进程
nameNode1:dataNode1:dataNode2:
查看HDFS情况,访问下面地址:http://192.168.67.41:50070/dfshealth.jsp
查看MapReduce情况,访问下面地址:
http://192.168.67.41:50030/jobtracker.jsp