首先我们需要为我们的主机名增加IP映射,那么我们需要知道我们的主机名是什么,执行下面命令查看主机名
vi /etc/sysconfig/network
查看一下HOSTNAME的值,你可以修改这个值,也可以直接将这个值拷贝出来
执行下面命令,增加IP映射
sudo vi /etc/hosts
在最后一行增加一行,输入主机的ip,以及上面的HOSTNAME的值
接下来运行一个实例来验证hadoop配置成功
cd /home/hadoop/hadoop-2.9.0
mkdir ./input
cp ./etc/hadoop/*.xml ./input
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.0.jar grep ./input ./output 'dfs[a-z.]+'
cat ./output/*
最后运行结果如下
如果出现错误INFO metrics.MetricsUtil: Unable to obtain hostName
,说明你ip映射没有成功,需要重新验证你的ip跟主机名是否正确
重复运行上面的实例需注意,hadoop不会覆盖结果文件,重复运行需先删除原先的结果文件
rm -r ./output
我们首先需要设置Hadoop环境变量
vi ~/.bashrc
在最后增加如下内容
export HADOOP_HOME=/home/hadoop/hadoop-2.9.0
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
保存退出后,source一下配置
source ~/.bashrc
我们还需要修改两个配置文件core-site.xml
和hdfs-site.xml
先修改core-site.xml
,
vi ./etc/hadoop/core-site.xml
在
之间增加如下内容
<configuration>
<property>
<name>hadoop.tmp.dirname>
<value>file:/home/hadoop/hadoop-2.9.0/tmpvalue>
<description>Abase for other temporary directories.description>
property>
<property>
<name>fs.defaultFSname>
<value>hdfs://localhost:9000value>
property>
configuration>
然后修改hdfs-site.xml
,
vi ./etc/hadoop/hdfs-site.xml
在
之间增加如下内容
<configuration>
<property>
<name>dfs.replicationname>
<value>1value>
property>
<property>
<name>dfs.namenode.name.dirname>
<value>file:/home/hadoop/hadoop-2.9.0/tmp/dfs/namevalue>
property>
<property>
<name>dfs.datanode.data.dirname>
<value>file:/home/hadoop/hadoop-2.9.0/tmp/dfs/datavalue>
property>
configuration>
修改完成后,执行NameNode的格式化
./bin/hdfs namenode -format
成功的话,可以看到successfully formatted
接下来开启NameNode和DataNode守护进程
./sbin/start-dfs.sh
如果出现Are you sure you want to continue connecting
,输入yes
启动完成后,可以通过命令jps
来判断是否成功,如果出现了NameNode
、DataNode
和SecondaryNameNode
,则说明成功启动,如果SecondaryNameNode
没有启动,运行sbin/stop-dfs.sh
关闭进程,然后重新尝试启动,如果没有NameNode
和DataNode
,那就是配置不成功,需要仔细检查之间的步骤,或者查看启动日志/home/hadoop/hadoop-2.9.0/logs/hadoop-hadoop-namenode-dblab.log
排查原因。
成功启动后,可以访问web界面ip:50070
查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件。
hadoop单机模式中的实例读取的本地数据,伪分布式读取的是HDFS上的数据,为了使用HDFS,我们需要先在HDFS中创建用户目录,然后再创建input文件夹,并将本地的文件上传至HDFS的`/user/hadoop/input文件夹中
./bin/hdfs dfs -mkdir -p /user/hadoop
./bin/hdfs dfs -mkdir input
./bin/hdfs dfs -put ./etc/hadoop/*.xml input
中间如果报错,可忽略
查看一下HDFS中input的文件列表
./bin/hdfs dfs -ls input
文件列表如下
接下来运行实例
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.0.jar grep input output 'dfs[a-z.]+'
查看一下HDFS上的结果
./bin/hdfs dfs -cat output/*
这里我们的input文件更多一些,所以结果也不一样
最后,如果想关闭Hadoop,运行下面命令
./sbin/stop-dfs.sh
YARN是从MapReduce中分离出来的,负责资源管理与任务调度,我们在这里启动YARN,首先修改配置文件mapred-site.xml
,先进行重命名
mv ./etc/hadoop/mapred-site.xml.template ./etc/hadoop/mapred-site.xml
然后修改mapred-site.xml
,
vi ./etc/hadoop/mapred-site.xml
在
增加如下内容
<configuration>
<property>
<name>mapreduce.framework.namename>
<value>yarnvalue>
property>
configuration>
接着修改yarn-site.xml
,
vi ./etc/hadoop/yarn-site.xml
在
增加如下内容
<configuration>
<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
property>
configuration>
最后启动YARN
./sbin/start-dfs.sh
./sbin/start-yarn.sh
开启历史服务器,方便在web中查看任务运行情况
./sbin/mr-jobhistory-daemon.sh start historyserver
在浏览器中打开ip:8088/cluster
运行命令jps
,额可以查看到多了NodeManager和ResourceManager两个后台进程
如果需要关闭,可以执行下面的命令
./sbin/stop-yarn.sh
./sbin/mr-jobhistory-daemon.sh stop historyserver