准备一台centos7的机器,去官网下载最新的安全包:下载地址
安装jkd(已安装请忽略),下载地址
个人习惯于使用rpm方式安装所以下载:
用root账户登录,安装JKD:
rpm -ivh jdk-8u192-linux-x64.rpm
创建hadoop用户并设置密码:
adduser hadoop
passwd hadoop
把hadoop用户加入到hadoop用户组:
sudo usermod -G hadoop hadoop
修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
hadoop ALL=(ALL) NOPASSWD: ALL
用户hadoop用户登录
修改hostname:
sudo vi /etc/hostname
我把hostname改成了hdp-node-01
改hosts与固定IP
sudo vi /etc/hosts
我这里打算安装三台,所以hosts文件修改成:
192.168.128.128 hdp-node-01
192.168.128.129 hdp-node-02
192.168.128.130 hdp-node-03
修改固定IP:
sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33
修改或者添加红色内容:
TYPE=“Ethernet”
PROXY_METHOD=“none”
BROWSER_ONLY=“no”
BOOTPROTO=“static”
DEFROUTE=“yes”
IPV4_FAILURE_FATAL=“no”
IPV6INIT=“yes”
IPV6_AUTOCONF=“yes”
IPV6_DEFROUTE=“yes”
IPV6_FAILURE_FATAL=“no”
IPV6_ADDR_GEN_MODE=“stable-privacy”
NAME=“ens33”
UUID=“27b8fada-4028-40fe-b7fa-3703dc75e407”
DEVICE=“ens33”
ONBOOT=“yes”
#查要改成的ip地址
IPADDR=192.168.128.128
NETMASK=255.255.255.0
#不通过网络控制器管理
NM_CONTROLLED=no
#对应的网关请从虚拟机上查看
GATEWAY=192.168.128.2
最后修改DNS域名解析的配置文件:
sudo vi /etc/resolv.conf
修改成
对应的网关 nameserver 192.168.128.2
设置防火墙对指定IP开放所以端口:
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.128.128" accept'
把我需要的三个IP都执行一遍
在opt目录下新建hadoop目录,把相关hadoop软件都安装到些目录,并修改所属用户和用户组:
sudo chown hadoop:hadoop hadoop
把hadooop安装包在/opt/hadoop下面解压:
tar -xzvf hadoop-3.1.1.tar.gz
在/opt/hadoop/hadoop-3.1.1目录下创建hadoop需要的配置的目录:
mkdir -p tmp var dfs/name dfs/data
修改工作节点:
vi etc/hadoop/workers
新加工作节点:
hdp-node-01
hdp-node-02
hdp-node-03
配置环境变量:
sudo vi /etc/profile
添加以下:
export HADOOP_HOME=/opt/hadoop/hadoop-3.1.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
修改hadoop环境配置:
vi etc/hadoop/hadoop-env.sh
添加:
export JAVA_HOME=/usr/java/jdk1.8.0_192-amd64
#可不加
# export HADOOP_HOME=/opt/hadoop/hadoop-3.1.1
# export HDFS_NAMENODE_USER=hadoop
# export HDFS_DATANODE_USER=hadoop
# export HDFS_SECONDARYNAMENODE_USER=hadoop
# export YARN_RESOURCEMANAGER_USER=hadoop
# export YARN_NODEMANAGER_USER=hadoop
修改core-site.xml
vi etc/hadoop/core-site.xml
fs.defaultFS
hdfs://hdp-node-01:9000
hadoop.tmp.dir
/opt/hadoop/hadoop-3.1.1/tmp
修改hdfs-site.xml
vi etc/hadoop/hdfs-site.xml
dfs.namenode.name.dir
/opt/hadoop/hadoop-3.1.1/dfs/name
dfs.replication
2
dfs.datanode.data.dir
/opt/hadoop/hadoop-3.1.1/dfs/data
修改yarn-site.xml文件
vi etc/hadoop/yarn-site.xml
yarn.resourcemanager.hostname
hdp-node-01
yarn.nodemanager.aux-services
mapreduce_shuffle
修改mapred-site.xml文件
vi etc/hadoop/mapred-site.xml
mapreduce.framework.name
yarn
yarn.app.mapreduce.am.env
HADOOP_MAPRED_HOME=${HADOOP_HOME}
mapreduce.map.env
HADOOP_MAPRED_HOME=${HADOOP_HOME}
mapreduce.reduce.env
HADOOP_MAPRED_HOME=${HADOOP_HOME}
把上面的机器再克隆两台,并修改ip及hostname
修改ip
vi /etc/sysconfig/network-scripts/ifcfg-ens33
修改hostname
vi /etc/hostname
三台机器间配置ssh免密码登录:
每台机器上都执行以下命令:
ssh-keygen
执行后一路回车即可,然后依次执行(本机也要配置ssh登录本机):
ssh-copy-id hdp-node-01
ssh-copy-id hdp-node-02
ssh-copy-id hdp-node-03
初始化HDFS
在hdp-node-01的hadoop安装目录上执行:
bin/hadoop namenode -format
启动HDFS:
sbin/start-dfs.sh
防火墙开放9870端口
sudo firewall-cmd --zone=public --remove-port=9870/tcp --permanent
sudo firewall-cmd --complete-reload
测试HDFS,访问页面:http://hdp-node-01:9870
测试HDFS:
新建目录: hadoop fs -mkdir -p /wordcount/input
上传文件:hadoop fs -put /opt/hadoop/hadoop-3.1.1/logs/hadoop-hadoop-namenode-hdp-node-01.log /wordcount/input
查看我们上传的文件:
启动yarn
sbin/start-yarn.sh
需要放开对应端口:
sudo firewall-cmd --zone=public --add-port=8088/tcp --permanent
sudo firewall-cmd --complete-reload
执行自带example中的wordcount命令
hadoop jar /opt/hadoop/hadoop-3.1.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.1.jar wordcount /wordcount/input /output
如果中间出现连接问题,请直接关闭防火墙或者设置集群间能相互访问
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.128.128" accept'
成功后会看到如下结果:
下载part-r-00000可以看到wordcount的结果,如果不能下载请开放对应端口或者关闭防火墙。