本文介绍如何配置和安装单节点的Hadoop伪集群,在单节点的集群上,同样可以操作Hadoop分布式文件系统(HDFS),以及执行Hadoop MapReduce。
运行环境:
通过VMware创建的虚拟机
RAM:2G
IP:192.168.117.200
HOSTNAME:NODE1
os:Red Hat Enterprise Linux Server release 6.3
依赖的软件
1.JDK,推荐sun JDK1.7及以上(JDK的安装,之前文章以及相关资料很多,在此不再累述)。本文环境为:
java version “1.8.0_121”
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
2.ssh服务(如无法运行ssh命令,请自行安装ssh),ssh用于到集群中的给台主机上启动守护进程,因此需要确保用户能够ssh到各主机,并且可以不输入密码。对于单个节点的伪集群,需要确保ssh localhost 是成功的,否则,需要通过ssh-keygen创建相关的密钥。如下,可以创建口令为空的密钥:
ssh-keygen -t rsa -P ” -f ~/.ssh/id_rsa //生成口令为空的ssh密钥
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys //将公钥加入已认证的密钥中
Hadoop安装
下载hadoop安装包,本文版本为hadoop-2.7.3.tar.gz,假设Hadoop将安装于/home目录下。
#tar -zxvf hadoop-2.7.3.tar.gz
#ln -sf hadoop-2.7.3 hadoop
修改环境变量,新增PATH(或者在原PATH后追加)
vim ~/.bash_profile
HADOOP_HOME=/home/hadoop
PATH=$PATH:$HOME/bin:/usr/local/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export PATH HADOOP_HOME
保存后,执行 source ~/.bash_profile 来使新增的环境变量生效
配置hadoop和yarn脚本的执行环境
echo $JAVA_HOME //查看jdk安装目录
/home/jdk1.8.0_121
$HADOOP_HOME/etc/hadoop/hadoop-env.sh,配置jdk路径
# The java implementation to use.
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/home/jdk1.8.0_121
$HADOOP_HOME/etc/hadoop/yarn-env.sh,配置jdk路径
# some Java parameters
# export JAVA_HOME=/home/y/libexec/jdk1.6.0/
export JAVA_HOME=/home/jdk1.8.0_121
配置Hadoop守护进程的相关属性
$HADOOP_HOME/etc/hadoop/core-site.xml:
<configuration>
<property>
<name>fs.defaultFSname>
<value>hdfs://localhost:9000value>
<description>HDFS文件系统的URI,localhost为主机的hostname,也可以填写IP地址;9000为namenode监听RPC端口,默认为8020description>
property>
<property>
<name>hadoop.tmp.dirname>
<value>/usr/hadoop/tmpvalue>
<description>namenode上本地的hadoop临时文件夹description>
property>
configuration>
$HADOOP_HOME/etc/hadoop/hdfs-site.xml:
<configuration>
<property>
<name>dfs.namenode.name.dirname>
<value>/usr/hadoop/hdfs/namevalue>
<description>namenode上存储hdfs名字空间元数据description>
property>
<property>
<name>dfs.datanode.data.dirname>
<value>/usr/hadoop/hdfs/datavalue>
<description>datanode上数据块的物理存储位置description>
property>
<property>
<name>dfs.replicationname>
<value>1value>
<description>副本个数,配置默认是3,应小于datanode机器数量description>
property>
configuration>
dfs.replication,默认为3,由于是单节点的集群,若不改为1的话,那么HDFS无法将块复制到其他datanode,会持续出现块不足的警告。
单节点的YARN配置
如果仅是在本地执行一个MapReduce任务,则可跳过本段。
在一个单节点的伪集群中,可以通过YRAN运行MapReduce任务,YRAN还提供了资源管理和节点管理的守护。
$HADOOP_HOME/etc/hadoop/mapred-site.xml:
<configuration>
<property>
<name>mapreduce.framework.namename>
<value>yarnvalue>
property>
configuration>
$HADOOP_HOME/etc/hadoop/yarn-site.xml:
<configuration>
<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
property>
<property>
<name>yarn.resourcemanager.webapp.addressname>
<value>192.168.117.200:8099value>
property>
configuration>
启动Hadoop
1.格式化文件系统
hdfs namenode -format
2.启动Nodenode,DataNode守护
start-dfs.sh
3.启动ResourceManager,NodeManager守护
start-yarn.sh
停止守护
stop-dfs.sh
stop-yarn.sh
简单测试:
1.创建文件夹
#hadoop fs -ls /import/data
#hadoop fs -ls /
Found 1 items
drwxr-xr-x - root supergroup 0 2017-07-08 02:32 /import
#hadoop fs -ls /import
Found 1 items
drwxr-xr-x - root supergroup 0 2017-07-08 02:32 /import/data
2.上传本地文件到HDFS,并查看
# hadoop fs -copyFromLocal core-site.xml /import/data
# hadoop fs -ls /import/data
Found 1 items
-rw-r--r-- 1 root supergroup 1126 2017-07-11 01:26 /import/data/core-site.xml
# hadoop fs -cat /import/data/core-site.xml
...
3.管理页面
NameNode管理页面
http://192.168.117.200:50070
ResourceManager管理页面
http://192.168.117.200:8099