- Java设置;
- 创建hadoop要用到的文件夹;
- hadoop设置;
- 格式化hdfs;
- 启动hadoop;
- 验证hadoop;
接下来就逐步开始吧;
机器规划
本次实战用到了三台CentOS7的机器,身份信息如下所示:
| IP地址 | hostname(主机名) | 身份 |
| — | — | — |
| 192.168.119.163 | node0 | NameNode、ResourceManager、HistoryServer |
| 192.168.119.164 | node1 | DataNode、NodeManager |
| 192.168.119.165 | node2 | DataNode、NodeManager、SecondaryNameNode |
Linux设置(三台电脑都要做)
- 修改文件/etc/hostname,将三台电脑的内容分别改为node0、node1、node2;
- 修改文件/etc/hosts,在尾部增加以下三行内容:
192.168.119.163 node0
192.168.119.164 node1
192.168.119.165 node2
- 关闭防火墙,并禁止启动:
systemctl stop firewalld.service && systemctl disable firewalld.service
- 关闭SELINUX,打开文件/etc/selinux/config,找到SELINUX的配置,改为SELINUX=disabled;
创建用户和用户组
- 执行以下命令创建用户和用户组:
groupadd hadoop && useradd -d /home/hadoop -g hadoop -m hadoop
- 创建完账号后记得用命令passwd初始化hadoop账号的密码;
SSH免密码设置
node0、node1、node2三台机器之间要设置SSH免密码登录,详细的设置步骤请参考《Linux配置SSH免密码登录(非root账号)》;
改用hadoop账号登录
后面在三台机器上的所有操作,都是用hadoop账号进行的,不再使用root账号;
文件下载
- 将JDK安装文件jdk-8u191-linux-x64.tar.gz下载到hadoop账号的家目录下;
- 将hadoop安装文件hadoop-2.7.7.tar.gz下载到hadoop账号的家目录下;
- 下载完毕后,家目录下的内容如下所示:
[hadoop@node0 ~]$ ls ~
hadoop-2.7.7.tar.gz jdk-8u191-linux-x64.tar.gz
JDK设置(三台电脑都要做)
- 解压jdk-8u191-linux-x64.tar.gz文件:
tar -zxvf ~/jdk-8u191-linux-x64.tar.gz
- 打开文件~/.bash_profile,在尾部追加以下内容:
export JAVA_HOME=/home/hadoop/jdk1.8.0_191
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:
J
A
V
A
H
O
M
E
/
l
i
b
:
{JAVA_HOME}/lib:
JAVAHOME/lib:{JRE_HOME}/lib
export PATH=
J
A
V
A
H
O
M
E
/
b
i
n
:
{JAVA_HOME}/bin:
JAVAHOME/bin:PATH
- 执行命令source ~/.bash_profile使得JDK设置生效;
- 执行命令java -version确认设置成功:
[hadoop@node0 ~]$ java -version
java version “1.8.0_191”
Java™ SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot™ 64-Bit Server VM (build 25.191-b12, mixed mode)
创建hadoop要用到的文件夹(三台电脑都要做)
创建文件夹,后面hadoop会用到:
mkdir -p ~/work/tmp/dfs/name && mkdir -p ~/work/tmp/dfs/data
hadoop设置
- 以hadoop账号登录node0;
- 解压hadoop安装包:
tar -zxvf hadoop-2.7.7.tar.gz
- 进入目录~/hadoop-2.7.7/etc/hadoop;
- 依次编辑hadoop-env.sh、mapred-env.sh、yarn-env.sh这三个文件,确保它们的内容中都有JAVA_HOME的正确配置,如下:
export JAVA_HOME=/home/hadoop/jdk1.8.0_191
- 编辑core-site.xml文件,找到configuration节点,改成以下内容:
fs.defaultFS
hdfs://node0:8020
hadoop.tmp.dir
/home/hadoop/work/tmp
dfs.namenode.name.dir
file://${hadoop.tmp.dir}/dfs/name
dfs.datanode.data.dir
file://${hadoop.tmp.dir}/dfs/data
- 编辑hdfs-site.xml文件,找到configuration节点,改成以下内容,把node2配置成sendary namenode:
dfs.namenode.secondary.http-address
node2:50090
- 编辑slaves文件,删除里面的"localhost",增加两行内容:
node1
node2
- 编辑yarn-site.xml文件,找到configuration节点,改成以下内容:
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.hostname
node0
yarn.log-aggregation-enable
true
yarn.log-aggregation.retain-seconds
106800
- 将文件mapred-site.xml.template改名为mapred-site.xml:
mv mapred-site.xml.template mapred-site.xml
- 编辑mapred-site.xml文件,找到configuration节点,改成以下内容:
mapreduce.framework.name
yarn
mapreduce.jobhistory.address
node0:10020
mapreduce.jobhistory.webapp.address
node0:19888
- 将整个hadoop-2.7.7目录同步到node1的家目录:
scp -r /hadoop-2.7.7 hadoop@node1:/
- 将整个hadoop-2.7.7目录同步到node2的家目录:
scp -r /hadoop-2.7.7 hadoop@node2:/
格式化hdfs
在node0执行以下命令格式化hdfs:
~/hadoop-2.7.7/bin/hdfs namenode -format
启动hadoop
- 在node0机器执行以下命令,启动hdfs:
~/hadoop-2.7.7/sbin/start-dfs.sh
- 在node0机器执行以下命令,启动yarn:
~/hadoop-2.7.7/sbin/start-yarn.sh
- 在node0机器执行以下命令,启动ResourceManager:
~/hadoop-2.7.7/sbin/yarn-daemon.sh start resourcemanager
- 在node0机器执行以下命令,启动日志服务:
~/hadoop-2.7.7/sbin/mr-jobhistory-daemon.sh start historyserver
- 启动成功后,在node0执行jps命令查看java进程,如下:
[hadoop@node0 ~]$ jps
3253 JobHistoryServer
2647 NameNode
3449 Jps
2941 ResourceManager
- 在node1执行jps命令查看java进程,如下:
[hadoop@node1 ~]$ jps
2176 DataNode
2292 NodeManager
2516 Jps
- 在node2执行jps命令查看java进程,如下:
[hadoop@node2 ~]$ jps
1991 DataNode
2439 Jps
2090 SecondaryNameNode
2174 NodeManager
至此,hadoop启动成功;
验证hadoop
下面运行一次经典的WorkCount程序来检查hadoop工作是否正常:
- 以hadoop账号登录node0,在家目录创建文件test.txt,内容如下:
hadoop mapreduce hive
hbase spark storm
sqoop hadoop hive
spark hadoop
- 在hdfs上创建一个文件夹:
~/hadoop-2.7.7/bin/hdfs dfs -mkdir /input
- 将test.txt文件上传的hdfs的/input目录下:
版权归原作者 2401_86400130 所有, 如有侵权,请联系我们删除。