在网上总结了好多人的blog。发现只有自己动手做才是王道。就自己将自己做的过程记录下来备用。
先是安装虚拟机 和centos 。
之后是安装ssh。
SSH 无密码验证配置(最好在root环境下)
Hadoop需要使用SSH协议,namenode将使用SSH协议启动namenode和datanode进程,伪分布式模式数据节点和名字节点均是本身,必须配置SSHlocalhost无密码验证。
机器上生成密码对,所有节点上执行以下命令:
ssh-keygen -trsa
Generatingpublic/private rsa key pair.
Enter file in whichto save the key (/root /.ssh/id_rsa): 默认路径
Enter passphrase(empty for no passphrase): 回车,空密码
Enter samepassphrase again:
Your identificationhas been saved in /root /.ssh/id_rsa.
Your public key hasbeen saved in /root /.ssh/id_rsa.pub.
这将在/home/hadoop/.ssh/目录下生成一个私钥id_rsa和一个公钥id_rsa.pub。
在namenode节点上做如下配置
cp id_rsa.pub authorized_keys
这样配置过后,namenode可以无密码登录本身,可以通过命令 “ssh localhost”来验证。
2 JDK 安装和Java环境变量配置
2.1 安装 JDK1.6
root用户登陆,新建文件夹/usr/program,下载JDK安装包jdk-6u13-linux-i586.bin,复制到目录/usr/ program下,在命令行进入该目录,执行命令“./jdk-6u13-linux-i586.bin”,命令运行完毕,将在目录下生成文件夹jdk1.6.0_13,安装完毕。
2.2 Java 环境变量配置
root用户登陆,命令行中执行命令”vi /etc/profile”,并加入以下内容,配置环境变量(注意/etc/profile这个文件很重要,后面Hadoop的配置还会用到)。
# set java environment
export JAVA_HOME=/usr/program/jdk1.6.0_13/
export JRE_HOME=/usr/program/jdk1.6.0_13/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
保存并退出,执行以下命令使配置生效
chmod +x /etc/profile
source /etc/profile
配置完毕,在命令行中使用命令”java -version”可以判断是否成功。
在hadoop用户下先运行 source /etc/profile , 测试java –version,一样成功。
3 Hadoop 配置
Hadoop用户登录。
下载hadoop-0.20.2,将其解压到/home/hadoop目录下,解压后目录形式是/home/hadoop/hadoop-0.20.2。使用如下命令:
tar zxvf hadoop-0.20.2.tar.gz
(1)配置Hadoop的配置文件
(a)配置hadoop-env.sh
$ vi hadoop-0.20.2/conf/hadoop-env.sh
(b)Hadoop-0.20之后的版本请分别配置core-site.xml,hdfs-site.xml和mapred-site.xml三个配置文件,配置方法即将下面hadoop-site.xml文件中的三块参数分别复制到三个文件当中。
core-site:
<?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://localhost:9000</value>
<description>HDFS的URI,文件系统://namenode标识:端口号</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadooptmp</value>
<description>namenode上本地的hadoop临时文件夹</description>
</property>
</configuration>
hdfs-site:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/home/hadoop/hdfs/name</value>
<description>namenode上存储hdfs名字空间元数据 </description>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/hdfs/data</value>
<description>datanode上数据块的物理存储位置</description>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
<description>副本个数,不配置默认是3,应小于datanode机器数量</description>
</property>
</configuration>
mapred-site:
<?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>localhost:9001</value>
<description>jobtracker标识:端口号,不是URI</description>
</property>
<property>
<name>mapred.local.dir</name>
<value>/home/hadoop/mapred/local</value>
<description>tasktracker上执行mapreduce程序时的本地目录</description>
</property>
<property>
<name>mapred.system.dir</name>
<value>/home/mapred/system</value>
<description>这个是hdfs中的目录,存储执行mr程序时的共享文件</description>
</property>
</configuration>
(c)将masters和slaves都改成自己主机ip 。
2. root@localhost:/usr/hadoop-0.20.2#hostname
查看主机名是否为localhost ,如果不是请修改/etc/hosts 和network。
3. [root@localhost etc]# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=localhost #改成自己主机名字
4.[root@localhost etc]# cat /etc/hosts
172.29.38.47 localhost localhost #将自己主机ip和名字对应
172.29.38.47 localhost localhost#两行一个是master 一个是slave
4 Hadoop 集群启动
[root@localhost hadoop]#bin/hadoop namenode -format #第一次启动hadoop先要格式化整个hadoop系统
当出现Re-formatfilesystem in /tmp/hadoop-root/dfs/name 时,要删除dfs文件夹。(这个是第二次格式化要删除的文件。如果没有删除的话相当于没有格式化。同时不格式化就不会有datanode进程。) [root@localhost hadoop]# bin/start-all.sh #开启hadoop
先是安装虚拟机 和centos 。
之后是安装ssh。
SSH 无密码验证配置(最好在root环境下)
Hadoop需要使用SSH协议,namenode将使用SSH协议启动namenode和datanode进程,伪分布式模式数据节点和名字节点均是本身,必须配置SSHlocalhost无密码验证。
机器上生成密码对,所有节点上执行以下命令:
ssh-keygen -trsa
Generatingpublic/private rsa key pair.
Enter file in whichto save the key (/root /.ssh/id_rsa): 默认路径
Enter passphrase(empty for no passphrase): 回车,空密码
Enter samepassphrase again:
Your identificationhas been saved in /root /.ssh/id_rsa.
Your public key hasbeen saved in /root /.ssh/id_rsa.pub.
这将在/home/hadoop/.ssh/目录下生成一个私钥id_rsa和一个公钥id_rsa.pub。
在namenode节点上做如下配置
cp id_rsa.pub authorized_keys
这样配置过后,namenode可以无密码登录本身,可以通过命令 “ssh localhost”来验证。
2 JDK 安装和Java环境变量配置
2.1 安装 JDK1.6
root用户登陆,新建文件夹/usr/program,下载JDK安装包jdk-6u13-linux-i586.bin,复制到目录/usr/ program下,在命令行进入该目录,执行命令“./jdk-6u13-linux-i586.bin”,命令运行完毕,将在目录下生成文件夹jdk1.6.0_13,安装完毕。
2.2 Java 环境变量配置
root用户登陆,命令行中执行命令”vi /etc/profile”,并加入以下内容,配置环境变量(注意/etc/profile这个文件很重要,后面Hadoop的配置还会用到)。
# set java environment
export JAVA_HOME=/usr/program/jdk1.6.0_13/
export JRE_HOME=/usr/program/jdk1.6.0_13/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
保存并退出,执行以下命令使配置生效
chmod +x /etc/profile
source /etc/profile
配置完毕,在命令行中使用命令”java -version”可以判断是否成功。
在hadoop用户下先运行 source /etc/profile , 测试java –version,一样成功。
3 Hadoop 配置
Hadoop用户登录。
下载hadoop-0.20.2,将其解压到/home/hadoop目录下,解压后目录形式是/home/hadoop/hadoop-0.20.2。使用如下命令:
tar zxvf hadoop-0.20.2.tar.gz
(1)配置Hadoop的配置文件
(a)配置hadoop-env.sh
$ vi hadoop-0.20.2/conf/hadoop-env.sh
# set java environment export JAVA_HOME=/usr/program/jdk1.6.0_13/ |
core-site:
<?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://localhost:9000</value>
<description>HDFS的URI,文件系统://namenode标识:端口号</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadooptmp</value>
<description>namenode上本地的hadoop临时文件夹</description>
</property>
</configuration>
hdfs-site:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/home/hadoop/hdfs/name</value>
<description>namenode上存储hdfs名字空间元数据 </description>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/hdfs/data</value>
<description>datanode上数据块的物理存储位置</description>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
<description>副本个数,不配置默认是3,应小于datanode机器数量</description>
</property>
</configuration>
mapred-site:
<?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>localhost:9001</value>
<description>jobtracker标识:端口号,不是URI</description>
</property>
<property>
<name>mapred.local.dir</name>
<value>/home/hadoop/mapred/local</value>
<description>tasktracker上执行mapreduce程序时的本地目录</description>
</property>
<property>
<name>mapred.system.dir</name>
<value>/home/mapred/system</value>
<description>这个是hdfs中的目录,存储执行mr程序时的共享文件</description>
</property>
</configuration>
(c)将masters和slaves都改成自己主机ip 。
2. root@localhost:/usr/hadoop-0.20.2#hostname
查看主机名是否为localhost ,如果不是请修改/etc/hosts 和network。
3. [root@localhost etc]# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=localhost #改成自己主机名字
4.[root@localhost etc]# cat /etc/hosts
172.29.38.47 localhost localhost #将自己主机ip和名字对应
172.29.38.47 localhost localhost#两行一个是master 一个是slave
hadoop 在格式化HDFS 的时候,通过hostname命令获取到的主机名是localhost,然后在/etc/hosts文件中进行映射,所以要看看/etc/hosts文件中的内容localhost对应的ip地址所否为本机。
4 Hadoop 集群启动
[root@localhost hadoop]#bin/hadoop namenode -format #第一次启动hadoop先要格式化整个hadoop系统
当出现Re-formatfilesystem in /tmp/hadoop-root/dfs/name 时,要删除dfs文件夹。(这个是第二次格式化要删除的文件。如果没有删除的话相当于没有格式化。同时不格式化就不会有datanode进程。) [root@localhost hadoop]# bin/start-all.sh #开启hadoop