linux系统:CentOS 7.0 (64位)
内存:4G
Hadoop版本:2.7.0 (仅供学习使用,暂不建议生产使用)
面向人群:Hadoop初学者
http://hadoop.apache.org/docs/r2.7.1/
在etc/sysconfig/network文件中,找到HOSTNAME参数,并将参数值为相应的主机名称,例如:hadoop01。
$vi /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME= hadoop01
编辑/etc/sysconfig/network-scripts/ifcfg-eth0文件,先注释掉该文件中的其他参数项,然后在文件的最后添加一下内容:
$vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
HWADDR=00:0c:29:48:35:64
IPADDR=192.168.10.9
NETMASK=255.255.255.0
GATEWAY=192.168.10.1
为了让修改的参数立即生效,需要使用重启网卡:
先关闭:
$ /sbin/ifdown eth0
再启动:
$/sbin/ifup eth0
编辑/etc/hosts文件,添加IP地址映射主机名关系,在文件最后添加如下的信息:
$ vi /etc/hosts
192.168.10.1 hadoop01
目前基于JVM开发的应用程序都需要JDK编译环境和JRE运行环境。因此,将Java JDK作为基础软件安装。首先需要在/user目录下,创建JDK创建安装目录,执行命令:
$mkdir java
本次安装采用的JDK的二进制文件,安装步骤非常简单,只需要复制到/user/java目录,执行解压操完成了JDK的安装。
$cp jdk-6u45-linux-x64.bin /user/java
$cd /user/java
$chmod +x jdk-6u45-linux-x64.bin
$./ jdk-6u45-linux-x64.bin
配置JDK环境变量,在/etc/profile文件的最后,添加JDK环境变量内容:
$vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.6.0_45
export CLASSPATH=$JAVA_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH
(注意:如果操作系统已经自带了JRE环境,为了使用新的JRE环境,需要将 JAVAHOME/bin放置到 PATH前面)
执行source命令,使得JDK环境变量立即生效:
$source /etc/profile
为了便于管理用户,先创建hadoop用户组,然后创建hadoop用户隶属hadoop组。
$groupadd hadoop
$useradd -g hadoop hadoop
创建完hadoop用户后,还需要修改hadoop用户的密码,执行passwd hadoop命令,并输入密码:
$passwd hadoop
为了规范Hadoop安装流程,需要在根目录下创建两个目录,并授权给hadoop用户,分别用于安装Hadoop软件和存储Hadoop数据:
1)创建Hadoop软件安装目录:
$mkdir /hadoop
$chown -R hadoop:hadoop /hadoop
2)创建Hadoop数据存储目录:
$mkdir /data
$chown -R hadoop:hadoop /data
以上,所有的步骤都是使用root用户执行。接下来的步骤就需要使用刚才创建的hadoop用户进行执行。
Hadoop需要通过SSH来启动Slave列表中主机的Hadoop守护进程,对于份分布式,Hadoop会采用与集群相同的处理方式,即依次启动/etc/hadoop/savle文件中配置的主机进程,只不过是在伪分布式中Slave为localhost,即Master和Slave为同一台机器。下面的所有操作都在hadoop用户下执行。
使用hadoop用户登陆到CentOS 7.0,并在hadoop用户的home目录下执行以下命令:
$ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
(注解:ssh-keygen表示生成密钥;-t指定密钥类型;-P 提供密语;-f生成的密钥文件)
其中:~表示当前目录,此处为/home/hadoop,”单引号之间没有空格。执行命令后,会在在/home/hadoop目录下创建.ssh目录,并在.ssh目录下生成id_dsa及id_dsa.pub 文件。这是SSH的一对私钥和公钥。
把id_dsa.pub(公钥)追加到授权的key中,并修改key的权限
$ cat~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
$ chmod600 ~/.ssh/authorized_keys
验证是否可以免密码登陆,第一次可能需要输入密码:
[hadoop@master .ssh]$ ssh localhost
Last login: Sat Dec 20 14:53:48 2014 from 192.168.10.1
出现这样的信息,表示SSH配置成功。
Hadoop的伪分布式安装过程非常简单,只需要将Hadoop安装包解压到指定的目录就可以了,接下来对Hadoop的主要配置文件进行配置。
将Hadoop安装包解压到/hadoop 目录下:
$tar –zxvf hadoop-2.7.0.tar.gz -C /hadoop
然后针对/hadoop/hadoop-2.7.0/etc/hadoop目录下几个主要文件进行配置:
hadoop-env.sh、yarn-env.sh 、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、slaves
编辑hadoop-env.sh,找到JAVA_HOME指定JDK的安装配置
$vi hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.6.0_45
编辑yarn-env.sh,找到JAVA_HOME指定JDK的安装配置
$vi yarn-env.sh
export JAVA_HOME=/usr/java/jdk1.6.0_45
$vi core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<!--hadoop01为主机名-->
<value>hdfs://hadoop01:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/data/hadoop/tmp</value>
<description>Abase for othertemporary directories.</description>
</property>
</configuration>
Hadoop中的HDFS配置,主要配置备份方式,及NameNode、DataNode、NameSecondary存储地址。
$vi hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/data/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/data/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>file:/data/hadoop/dfs/namesecondary</value>
</property>
</configuration>
Hadoop的MapReduce框架配置,配置MapReduce框架名称
$vi mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.app.mapreduce.am.staging-dir</name>
<value>/tmp/hadoop-yarn/staging</value>
</property>
</configuration>
$vi yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop01</value>
</property>
</configuration>
对于伪分布式安装,可以不用修改该文件,采用默认配置,即可。
$vi slaves
localhost
(注解:slaves节点配置列表,默认:localhost)
这是一个可选步骤,为了方便执行Hadoop命令,可以在hadoop用户的环境变量中添加Hadoop环境变量。切换到hadoop用户的home目录,编辑.bash_profile文件,添加以下内容:
$vi .bash_profile
export HADOOP_HOME=/hadoop/hadoop-2.7.0
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export PATH=$HADOOP_HOME/bin:$PATH
使用source命令,使其立即生效:source .bash_profile,到此,整个Hadoop伪分布式安装完毕,接下来就可以格式HDFS文件系统,并启动Hadoop系统。
在启动Hadoop系统之前,需要格式化Hadoop的HDFS文件系统。注意,只有首次启动Hadoop系统时,才需要格式化HDFS文件系统,执行hdfs命令格式HDFS文件系统:
$hdfs namenode –format
出现以下信息,说明格式化HDFS文件系统成功:
14/12/21 14:25:34 INFO util.ExitUtil: Exiting with status 0
14/12/21 14:25:34 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at hadoop01/192.168.10.1
************************************************************/
Hadoop安装目录的sbin目录下,封装了启动Hadoop系统的脚本。那么就进入安装Hadoop安装目录的sbin目录,启动Hadoop,验证是否安装成功!
$ cd /hadoop/hadoop-2.7.0/sbin/
$ ./start-dfs.sh
如果没报任何错误,则使用java的jps命令,查看HDFS文件系统是否启动成功!
$ jps
6649 DataNode
6876 SecondaryNameNode
7049 Jps
6504 NameNode
$ cd /hadoop/hadoop-2.7.0/sbin/
$ ./start-yarn.sh
如果没报任何错误,则使用java的jps命令,查看YARN资源管理器是否启动成功!
$ jps
7230 NodeManager
6649 DataNode
6876 SecondaryNameNode
7303 Jps
6504 NameNode
7108 ResourceManager
细心的朋友可能已经发现多了一个ResourceManager进程。
这时,打开浏览器,输入:
http://192.168.10.9:50070/
如果能够查看信息说明Hadoop安装成功了
也可以使用./start-all.sh脚本启动Hadoop系统,start-all.sh脚本封装了start-dfs.sh脚本和start-yarn.sh脚本。