一 试验环境

操作系统

IP

主机名

Hadoop版本

CentOS 6.5

10.192.203.108

nn01

2.6.4

二 试验步骤

2.1 安装jdk

安装jdk可以参考:https://blog.csdn.net/yabingshi_tech/article/details/51498017

2.2 创建hadoop用户

useradd hadoop

passwd hadoop

#添加hadoop到sudoers(以下命令以root用户执行)列表,并使其有root权限

chmod u+w /etc/sudoers

然后用vi编辑器打开sudoers文件,在里面添加一句话:

hadoop ALL=NOPASSWD:ALL

2.3 安装Hadoop

tar xzvf hadoop-2.6.4.tar.gz

mv hadoop-2.6.4 hadoop

chown -R hadoop:hadoop hadoop

mv hadoop /usr/local

2.4 创建目录

mkdir -p /data/logs/hadoop

chown -R hadoop:hadoop /data/logs/hadoop

 

mkdir -p /data/hadoop/hdfs/nn

mkdir -p /data/hadoop/hdfs/dn

chown -R hadoop:hadoop /data/hadoop

 

2.5 设置环境变量

切换到hadoop用户,并编辑~/.bashrc文件,添加以下环境变量:

export HADOOP_HOME=/usr/local/hadoop

export HADOOP_PREFIX=$HADOOP_HOME

export HADOOP_MAPRED_HOME=$HADOOP_HOME

export HADOOP_COMMON_HOME=$HADOOP_HOME

export HADOOP_HDFS_HOME=$HADOOP_HOME

export YEAN_HOME=$HADOOP_HOME

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

export HADOOP_INSTALL=$HADOOP_HOME

export JAVA_HOME=/usr/local/jdk1.8.0_92

 

source ~/.bashrc使修改生效

2.6 修改hadoop配置文件

2.6.1 配置hadoop-env.sh

编辑$HADOOP_PREFIX/etc/hadoop/hadoop-env.sh文件,

在文件开头添加以下变量:

export HADOOP_NAMENODE_OPTS=" -Xms1024m -Xmx1024m -XX:+UseParallelGC"

export HADOOP_DATANODE_OPTS=" -Xms1024m -Xmx1024m"

export HADOOP_LOG_DIR=/data/logs/hadoop

/*

这个配置最好不要按照默认配置来,因为:JVM运行的内存如果不设定占用大小的话,要么不够,要么就把机器的内存都占满了。曾经有一次我们项目组花了整整一个星期来解决Hadoop集群的节点频繁地自己挂掉的问题,最后发现是内存分配不足造成的。之后我就养成了只要用到JVM的地方都加入

内存参数,至少内存多少自己心里有数,让情况可控。

日志文件路径如果不设定的话,多半后期会遇到放日志的分区满了,各种奇怪故障层出不穷。

*/

2.6.2 配置core-site.xml

顾名思义,这个文件就是配置Hadoop的Web属性的文件。我们需要在<configuration>节点中增加配置项,添加后的<configuration>节点是这样的:

<configuration>

<property>

<name>fs.defaultFS</name>

<value>hdfs://nn01:8020</value>

</property>

</configuration>

 

备注:nn01是主机名

2.6.3 配置hdfs-site.xml

这个文件负责配置HDFS相关的属性。我们需要在<configuration>节点中增加配置项,添加后的<configuration>节点是这样的:

<configuration>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

<property>

<name>dfs.namenode.name.dir</name>

<value>file:///data/hadoop/hdfs/nn</value>

</property>

<property>

<name>dfs.datanode.data.dir</name>

<value>file:///data/hadoop/hdfs/dn</value>

</property>

</configuration>

 

说明:

① dfs.replication是用于设置数据备份的,我们只是学习,所以暂时设置为1。实际开发中请千万不要设置成1,因为Hadoop的数据很容易坏。坏了不是问题,只要有备份就不算真得坏,Hadoop会自动使用备份;但是如果没有备份,就比较麻烦了。

② dfs.namenode.name.dir是namenode在硬盘上存储文件的位置

③ dfs.datanode.data.dir是datanode在硬盘上存储文件的位置

为什么在namenode上也要设定datanode的存储目录

其实为namenode节点设置datanode的存储目录的确没什么意义。不过在所有节点上用同一份配置文件是Hadoop官方的要求,所以哪怕是namenode节点的配置文件,也包含有datanode的存储目录。这样做的理由是:

① 实际生产环境中有可能有成百上千台机器,为不同角色的机器设定不同的配置文件实在太麻烦,干脆就都用同一份文件,各个角色分别读取属于自己的配置项就好了。

② 配置文件经常需要更新,用同一份文件的好处就是,当配置更新的时候,全部批量覆盖一遍就好了,简单粗暴

 

2.7 格式化namenode

切换到hadoop用户,然后用hdfs命令格式化namenode:

hdfs namenode -format

 

2.8 启动hadoop

$HADOOP_PREFIX/sbin/start-dfs.sh

 

我们用start-dfs.sh启动hadoop,hadoop就会在nn01上同时启动namenode、secondary namenode、datanode。这样一来,nn01就是一个独立节点模式(single node)的hadoop。

启动的时候注意看有没有什么异常,启动完记得看看启动日志有没有什么异常。

通过tail命令查看启动日志:

安装hadoop(单机版)

 

2.9 验证

#用浏览器访问Hadoop控制台

打开浏览器访问http://10.192.203.108:50070。如果没问题的话就可以看到以下画面,如图所示:

安装hadoop(单机版)

如果想停止单机模式的Hadoop,使用命令:stop-dfs.sh

--本篇文章主要参考了《hbase不睡觉书》。

 

相关文章: