一:系统环境设置(所有节点都设置)
1:关闭selinux和防火墙
setenforce 0
sed -i '/^SELINUX=/s/enforcing/disabled/' /etc/selinux/config
systemctl stop firewalld
systemctl disable firewalld
2:为各个节点设置主机名
hostnamectl set-hostname node1
bash
hostnamectl set-hostname node2
bash
hostnamectl set-hostname node3
bash
3:修改每台主机的hosts文件
cat <<EOF>>/etc/hosts
192.168.10.101 node1
192.168.10.102 node2
192.168.10.103 node3
EOF
4:创建hdoop用户组和hduser用户
[root@node1 ~]# groupadd hadoop
[root@node1 ~]# useradd -g hadoop hduser
[root@node1 ~]# passwd hduser
此处设置密码
5:为hduser用户授权
[root@node1 ~]# visudo
在末尾添加:
hduser ALL=(ALL) ALL
6:安装JDK
[root@node1 ~]# rpm -ivh jdk-8u171-linux-x64.rpm
[root@node1 ~]# vim /etc/profile
在末尾添加:
export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
export CLASSPATH=JAVA_HOME/lib:CLASSPATH
export PATH=JAVA_HOME/bin:PATH
[root@node1 ~]# source /etc/profile
7:配置免密码登录(在node1上配置)
[root@node1 ~]# su - hduser
[hduser@node1 ~]$ ssh-keygen -t rsa //一路回车键即可
[hduser@node1 ~]$ ssh-copy-id hduser@node1
[hduser@node1 ~]$ ssh-copy-id hduser@node2
[hduser@node1 ~]$ ssh-copy-id hduser@node3
二:安装Hadoop
1:将hadoop包拷贝到hduser的家目录并解压
在node1上操作
[hduser@node1 ~]$ tar zxvf hadoop-2.6.5.tar.gz
[hduser@node1 ~]$ mv hadoop-2.6.5 hadoop
2:配置hadoop的环境变量
[hduser@node1 ~]$ sudo vim /etc/profile
在末尾添加:
export HADOOP_HOME=/home/hduser/hadoop
export PATH=HADOOP_HOME/bin:PATH
[hduser@node1 ~]$ source /etc/profile
3:配置hadoop-env.sh 文件
[hduser@node1 ~]$ cd ~/hadoop/etc/hadoop/
[hduser@node1 hadoop]$ vim hadoop-env.sh
在末尾添加:
export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
4:修改yarn-env.sh文件
[hduser@node1 hadoop]$ vim yarn-env.sh
在末尾添加
export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64
5:修改slaves文件
[hduser@node1 hadoop]$ vim slaves
清空文件中原有的内容
node2
node3
6:编辑core-site.xml文件
[hduser@node1 hadoop]$ vim core-site.xml
在末尾找到<configuration>模块
在里面添加配置:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hduser/hadoop/tmp</value>
</property>
</configuration>
备注:定义hdfs的uri,以及hdfs的临时目录
7:编辑hdfs-site.xml文件
[hduser@node1 hadoop]$ vim hdfs-site.xml
在末尾找到<configuration>模块
在里面添加:
<configuration>
<property><name>dfs.namenode.secondary.http-address</name><value>node1:50090</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hduser/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hduser/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
备注:
名称节点和数据节点的存放位置,文件副本数和读取权限。
8:修改mapred-site.xml文件
[hduser@node1 hadoop]$ cp mapred-site.xml.template mapred-site.xml
[hduser@node1 hadoop]$ vim mapred-site.xml
在末尾找到<configuration>模块,在里面添加:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>node1:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>node1:19888</value>
</property>
</configuration>
备注:Mapreduce作业记录的web地址和端口。
9:修改yarn-site.xml文件
[hduser@node1 hadoop]$ vim yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>node1:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>node1:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>node1:8035</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>node1:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>node1:8088</value>
</property>
</configuration>
备注:
resourcemanager、nodemanager的通信端口,web端口等信息
10:将hadoop目录拷贝到其他节点上
[root@node1 ~]#scp -r /home/hduser/hadoop node2:/home/hduser
[root@node1 ~]#scp -r /home/hduser/hadoop node3:/home/hduser
三:验证安装配置
1:在 Master 主机(node1)上格式化 NameNode
[hduser@node1 ~]$ cd hadoop/
[hduser@node1 hadoop]$ bin/hdfs namenode -format
[hduser@node1 hadoop]$ sbin/start-dfs.sh
2:查看进程
[hduser@node1 hadoop]$ jps
16721 Jps
15687 NameNode
15866 SecondaryNameNode
3:启动yarn
[hduser@node1 hadoop]$ sbin/start-yarn.sh
4:查看集群环境
[hduser@node1 hadoop]$ bin/hdfs dfsadmin -report
5:浏览器查看 HDFS 运行状态:
四:运行 Hadoop 的 WordCount 程序
WordCount 实现了对文本中的单词计数的功能,并要求输出结果并按单词首字母排序
1:创建测试文件的目录
[hduser@node1 ~]$ mkdir ~/file
2:编辑测试文件
[hduser@node1 ~]$ cd ~/file/
[hduser@node1 file]$ echo "ni hao hadoop">file1.txt
[hduser@node1 file]$ echo "hello hadoop hi china">file2.txt
3:启动hadoop并 创建hdfs目录
[hduser@node1 file]$ cd ~/hadoop/
[hduser@node1 hadoop]$ sbin/start-all.sh
[hduser@node1 hadoop]$ bin/hadoop fs -mkdir /input2
4:将file1和file2拷贝到hdfs存储目录中
[hduser@node1 hadoop]$ bin/hadoop fs -put ~/file/file* /input2/
[hduser@node1 hadoop]$ bin/hadoop fs -ls /input2/
5:执行WordCount程序,对文件进行统计
[hduser@node1 hadoop]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar wordcount /input2/ /output2/wordcount1
注意:输出目录不能已存在,否则不会输出
6:查看执行结果
[hduser@node1 hadoop]$ bin/hadoop fs -cat /output2/wordcount1/*
如果看到输出结果证明hadoop安装成功