详细搭建可以参考我的Hadoop2.8.0安装
本文下载的是3.1.3版本的Hadoop
关闭防火墙
systemctl stop firewalld
setenforce 0
安装3个centos7虚拟机
安装3个机器,机器分别叫master slave1 slave2
在/etc/hostname
下修改主机名
修改/etc/hosts文件
修改这3台机器的/etc/hosts文件,在文件中添加以下内容,如图:
说明:ip地址没必要和我的一样,这里只是做一个映射,只要映射是对的就可以,至于修改方法,vi vim 命令都可以。
配置成功后使用 ping 命令检查者3台机器是否相互ping的通,以master为例
使用该命令 在各个机器都尝试是否可以ping通,ping得通,说明机器是互联的,而且hosts配置也正确。
给3个机器生成秘钥文件
以master为例,执行命令,生成空字符串的秘钥(后面要使用公钥),命令是:
ssh-keygen -t rsa
使用相同的方法为slave1与slave2生成秘钥(命令相同,不用做任何修改)。
在master上创建authorized_keys文件
接下来要做的事情就是在3台机器的/root/.shh/目录下都存入一个内容相同的文件,文件名称叫authorized_keys,文件内容是我们刚才为3台机器生成的公钥。
为了方便,我下面的步骤是现在master上生成authorized_keys文件,然后把3台机器刚才生成的公钥加入到这个master的authorized_keys文件里,然后在将这个authorize_keys文件复制到slave1与slave2里。
详细的JDK安装
创建java目录
mkdir /usr/local/jdk
下载jdk1.8版本,并将其解压到/usr/local/java目录下
tar -zxvf jdk-8u201-linux-x64.tar.gz -C /usr/local/jdk
#JAVA
JAVA_HOME=/usr/local/jdk/jdk1.8.0_201/ #自己解压后的jdk目录名称
JRE_JOME=/usr/local/jdk/jdk1.8.0_201/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_JOME CLASS_PATH PATH
传输到其他节点
scp -r /usr/local/jdk/ root@slave1:/usr/local/
scp -r /usr/local/jdk/ root@slave2:/usr/local/
解压缩Hadoop3.1.3到cd /usr/local/hadoop/
修改环境变量
#hadoop environment
export HADOOP_HOME=/usr/local/hadoop/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
scp /etc/profile root@slave1:/etc/
scp /etc/profile root@slave2:/etc/
#在/usr/local/hadoop目录下创建目录
cd /usr/local/hadoop/
mkdir tmp
mkdir var
mkdir dfs
mkdir dfs/name
mkdir dfs/data
进入hadoop的配置文件目录下
cd /usr/local/hadoop/hadoop-3.1.3/etc/hadoop
vi workers
删除localhost
添加从节点主机名,例如我这里是:
slave1
slave2
hadoop-env.sh
在# JAVA_HOME=/usr/java/testing hdfs dfs -ls后添加
export JAVA_HOME=/usr/local/jdk/jdk1.8.0_201
export HADOOP_HOME=/usr/local/hadoop/hadoop-3.1.3
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
core-site.xml
fs.defaultFS
hdfs://master:9000
hadoop.tmp.dir
/usr/local/hadoop/tmp
hdfs-site.xml
dfs.name.dir
/usr/local/hadoop/dfs/name
Path on the local filesystem where theNameNode stores the namespace and transactions logs persistently.
dfs.data.dir
/usr/local/hadoop/dfs/data
Comma separated list of paths on the localfilesystem of a DataNode where it should store its blocks.
dfs.namenode.http-address
master:50070
dfs.namenode.secondary.http-address
master:50090
dfs.replication
2
dfs.permissions
false
need not permissions
yarn-site.xml
在命令行下输入如下命令,并将返回的地址复制,在配置下面的yarn-site.xml时会用到。
hadoop classpath
yarn.resourcemanager.hostname
master
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.application.classpath
输入刚才返回的Hadoop classpath路径
mapred-site.xml
mapred.job.tracker
master:49001
mapred.local.dir
/usr/local/hadoop/var
mapreduce.framework.name
yarn
使用scp命令将master下的目录复制到各个从节点的相应位置上
scp -r /usr/local/hadoop/ root@slave1:/usr/local/
scp -r /usr/local/hadoop/ root@slave2:/usr/local/
在master中运行下述命令,格式化节点
hadoop namenode -format
运行之后不报错,并在倒数第五六行有successfully即为格式化节点成功
运行以下命令,启动hadoop集群的服务
在sbin目录下运行start-all.sh
在master上输入jps可以看到master下的节点
在浏览器输入http://172.18.74.131:50070/
进入web模式
hadoop fs -mkdir -p /data/input
随便输入一些字符
hadoop fs -put wordcount.txt /data/input
hadoop fs -ls /data/input
在hadoop_home的目录下执命令:
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /data/input/wordcount.txt /data/out/my_wordcount
hadoop fs -cat /data/out/my_wordcount/part-r-00000
统计字数成功!