搭建步骤
1.安装centos7,并进行准备工作(可以安装一个之后然后克隆)
2.修改各个centos7的hostname和hosts
3.创建用户和用户组
4.配置centos7网络,是centos7系统之间以及和hosts主机之间可以通过互相ping通
5.安装jdk和配置环境变量,检查是否配置成功
6.配置ssh,实现节点间的无密码登录ssh node1/2指令验证时候成功
7.master配置hadoop,并将hadoop文件传输到node节点
8.配置环境变量,并启动hadoop,检查是否安装成功,执行wordcount检查是否成功
采用三台机器
主机名 ip 对应的角色
namenode 188.2.72.57 namenode(主)
datanode1 188.2.72.58 datanode1(从1)
datanode2 188.2.72.59 datanode2(从2)
由于是现有三台centos系统,所以省略安装centos系统的步骤
1.修改主机名 (以namenode举例)
hostnamectl set-hostname namenode(永久修改主机名)
reboot(重启系统)
2.修改hosts(以namenode举例)
188.2.72.60 namenode
188.2.72.59 datanode2
188.2.72.58 datanode1
3.尝试看看能不能ping通(以namenode举例)
ping -c 3 datanode1
4.准备安装oracle的jdk,但安装之前需要查看有没有安装jdk
java-version
5.查看有jdk,且是centos7系统自带的openjdk,我们需要删除掉安装oracle的jdk
rpm -qa | grep java(查询java版本)
rpm -e --nodeps xxx(逐个删除完)
rpm -qa | grep java(没有显示任何)
那么就删除完了。我们可以安装oracle的jdk了
6. 来到java目录(注,我是已经提前创建了java目录跟将tar.gz包复制到了java目录中)
cd /usr/java
ls
7.解压jdk
tar zxvf jdk-8u144-linux-x64.tar.gz
ls
8. Jdk的环境变量配置
方式一:
设置环境变量,执行vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_144
export PATH=$JAVA_HOME/bin
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:${JRE_HOME}/lib
方式二:
sudo vi ~/.bashrc
在打开的文件的末尾添加以下信息:
export JAVA_HOME=/usr/java/jdk1.8.0_144
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
9. 使用source命令来使刚才的jdk环境变量配置文件生效
source ~/.bashrc
10. 在root用户下给hadoop用户增加sudo权限
chmod u+w /etc/sudoers
vi /etc/sudoers
chmod u-w /etc/sudoers
11.ssh生成密钥
ssh-keygen -t rsa(连续三次回车)
12. 切换到.ssh目录下,进行查看公钥和私钥
cd .ssh
ls
13.将id_rsa.pub复制到authorized_keys,并且给设置权限
cp id_rsa.pub authorized_keys
然后将三个authorized_keys都下载到本地,对三个authorized_keys的内容都合并,意思就是说。三台机器中的authorized_keys的内容都是相同的。
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
14.ssh 与别的节点无密钥连接(每个节点都需要进行连接)
ssh datanode1(连接到datanode1)
hostname(查看主机名,是否连接到)
exit(登出,不然会在连接到的机器上操作)
ssh datanode2(连接到datanode1)
hostname(查看主机名,是否连接到)
exit(登出,不然会在连接到的机器上操作)
15.hadoop环境配置
16.首先,切换到/usr/java/ ,再切换到root用户下,再 /root/java
cd /usr/java
su root
16.解压hadoop (因为之前已经将hadoop的tar.gz安装包移动过来,所以就略过移动那一步)
tar zxvf hadoop-2.7.4.tar.gz
17. 将文件名hadoop-2.7.4改为hadoop
mv hadoop-2.7.4 hadoop
ls
18. 将刚改名的hadoop文件,权限赋给hadoop用户
chown -R hadoop:hadoop hadoop
ls -l(查看权限)
19. 创建目录
mkdir /root/hadoop
mkdir /root/hadoop/tmp
mkdir /root/hadoop/var
mkdir /root/hadoop/dfs
mkdir /root/hadoop/dfs/name
mkdir /root/hadoop/dfs/data
20.修改配置文件
cd /usr/java/hadoop/etc/hadoop
ls
vi hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_144
21.修改slaves
vi slaves
将里面的localhost删除,增加:
datanode1
datanode2
22.修改core-site.xml文件
vi core-site.xml
在<configuration>节点内加入配置:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop-2.7.4/dfs/tmp</value>
</property>
</configuration>
23. 新建并且修改mapred-site.xml
在该版本中,有一个名为mapred-site.xml.template的文件,
复制该文件,然后改名为mapred-site.xml,命令是:
cp mapred-site.xml.template mapred-site.xml(复制文件)
vi mapred-site.xml(修改配置文件)
在<configuration>节点内加入配置:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>namenode:9010</value>
</property>
<property>
<name>mapreduce.jobtracker.http.address</name>
<value>namenode:50030</value>
</property>
<property>
<name>mapreduce.jobhisotry.address</name>
<value>namenode:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>namenode:19888</value>
</property>
<property>
<name>mapreduce.jobhistory.done-dir</name>
<value>/jobhistory/done</value>
</property>
<property>
<name>mapreduce.intermediate-done-dir</name>
<value>/jobhisotry/done_intermediate</value>
</property>
<property>
<name>mapreduce.job.ubertask.enable</name>
<value>true</value>
</property>
</configuration>
24. 修改vi hdfs-site.xml配置文件,添加以下信息
vi hdfs-site.xml
在<configuration>节点内加入配置:
<configuration>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>namenode:50090</value>
<description>The secondary namenode http server address and port.</description>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/hadoop-2.7.4/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/hadoop-2.7.4/dfs/data</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>file:///home/hadoop/hadoop-2.7.4/dfs/namesecondary</value>
<description>Determines where on the local filesystem the DFSsecondary name node should store the temporary images to merge. If this is acomma-delimited list of directories then the image is replicated in all of thedirectories for redundancy.</description>
</property>
</configuration>
25. 修改yarn-site.xml配置文件
vi yarn-site.xml
在<configuration>节点内加入配置:
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>namenode</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>10</value>
</property>
</configuration>
26.hadoop需要配置的文件
27.关闭防火墙
systemctl stop firewalld.service (关闭防火墙)
注:如果不关闭防火墙,可能导致无法使用集群
28.初始化namenode,因为namenode是namenode,datanode1和datanode2都是datanode,所以只需要对namenode进行初始化操作,也就是对hdfs进行格式化。
bin/hadoop namenode -format(在usr/java/hadoop目录下执行该命令)
29.启动集群
sbin/start-all.sh
30.查看集群是否启动
jps
31.管理员身份运行记事本
32.打开本地的host文件
188.2.72.60 namenode
33.最后,现在是来验证hadoop是否安装成功。在Windows上可以通过 http://cnq:50070 访问WebUI来查看NameNode,集群、文件系统的状态。这里是HDFS的Web页面
http://namenode:50070