- 规划
三台机器:bigdata1,bigdata2,bigdata3
bigdata1作为主节点,剩下2台机器作为从节点
#以下操作只在主节点进行
#在root家目录下创建2个文件夹tools和training
#tools用来存储压缩文件包,training用于存放解压后的文件
mkdir /root/tools
mkdir /root/training
#将准备好的安装包上传到tools目录下
scp jdk-8u144-linux-x64.tar.gz root@bigdata1:/root/tools
scp hadoop-2.8.4.tar.gz root@bigdata1:/root/tools
- 准备工作
关闭防火墙
#以下操作3台机器均需要
systemctl stop firewalld.service
systemctl disable firewalld.service
设置主机名
#以下操作3台机器均需要
vi /etc/hosts
#添加以下内容
192.168.61.111 bigdata1
192.168.61.112 bigdata2
192.168.61.113 bigdata3
安装JDK
#以下操作只在主节点进行
#解压JDK文件到training中
tar -zxvf /root/tools/jdk-8u144-linux-x64.tar.gz -C /root/training
#修改文件名,方便以后jdk版本切换
mv /root/training/jdk1.8.0_144 /root/training/jdk
#修改配置文件
vi /root/.bash_profile
#在最后添加以下内容
JAVA_HOME=/root/training/jdk
export JAVA_HOME
PATH=$JAVA_HOME/bin:$JAVA_HOME/lib:$PATH
export PATH
#保存文件
#使配置文件生效
source /root/.bash_profile
#查看是否生效
java -version
- 配置免密码登录
#以下操作在每台机器上都要做一遍
#在每台机器上产生公钥和私钥
ssh-keygen -t rsa
#将每台机器的公钥发送给其他机器(包括自己)
ssh-copy-id -i /root/.ssh/id_rsa.pub root@bigdata1
ssh-copy-id -i /root/.ssh/id_rsa.pub root@bigdata2
ssh-copy-id -i /root/.ssh/id_rsa.pub root@bigdata3
- 保证每台机器的时间同步
- 安装Hadoop全分布环境
#以下操作在主节点进行
#解压hadoop压缩文件到training文件夹中
tar -zxvf /root/tools/hadoop-2.8.4.tar.gz -C /root/training
#修改文件名,方便以后hadoop版本切换
mv /root/training/hadoop-2.8.4 /root/training/hadoop
#修改配置文件
vi /root/.bash_profile
#在最后添加以下内容
HADOOP_HOME=/root/training/hadoop
export HADOOP_HOME
PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export PATH
#保存文件
#使配置文件生效
source /root/.bash_profile
以下为修改hadoop配置文件
hadoop-env.sh
vi /root/training/hadoop/etc/hadoop/hadoop-env.sh
#修改第25行内容,可以通过set number查看行号
export JAVA_HOME=/root/training/jdk
hdfs-site.xml
vi /root/training/hadoop/etc/hadoop/hdfs-site.xml
#添加以下内容
<!--配置数据块的冗余度,默认是3-->
<!--原则上冗余度和节点个数据保持一致,最大不要超过3-->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!--是否开启HDFS的权限检查,默认是true-->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
core-site.xml
#首先需要创建一个tmp目录
mkdir /root/training/hadoop/tmp
vi /root/training/hadoop/etc/hadoop/core-site.xml
#添加以下内容
<!--配置HDFS主节点的地址,就是NameNode的地址-->
<!--9000是RPC通信的端口-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://bigdata1:9000</value>
</property>
<!--HDFS数据块和元信息保存在操作系统的目录位置-->
<!--默认是Linux的tmp目录,因为Linux重启会情况tmp目录,需要修改,修改的tmp目录需要提前创建-->
<property>
<name>hadoop.tmp.dir</name>
<value>/root/training/hadoop/tmp</value>
</property>
mapred-site.xml
#该文件默认不存在,但是存在一个template文件可以复制
cp /root/training/hadoop/etc/hadoop/mapred-site.xml.template /root/training/hadoop/etc/hadoop/mapred-site.xml
vi /root/training/hadoop/etc/hadoop/mapred-site.xml
#添加以下内容
<!--MR程序运行的容器是Yarn-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
yarn-site.xml
vi /root/training/hadoop/etc/hadoop/yarn-site.xml
#添加以下内容
<!--ResourceManager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>bigdata1</value>
</property>
<!--NodeManager运行MR任务的方式:Shuffle-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
slaves 配置从节点地址
vi /root/training/hadoop/etc/hadoop/slaves
#修改成以下内容
bigdata2
bigdata3
进行NameNode格式化
hdfs namenode -format
6.将配置好的目录复制到从节点上
scp -r /root/training root@bigdata2:/root
scp -r /root/training root@bigdata3:/root
scp /root/.bash_profile root@bigdata2:/root
scp /root/.bash_profile root@bigdata3:/root
#在从节点上使配置文件生效
source /root/.bash_profile
- 启动集群
#在主节点进行
start-all.sh
- 查看是否启动成功
#分别在3台机器执行jps
jps
看到以下结果说明集群搭建成功
主节点:jps,NameNode,SecondaryNameNode,ResourceManager
从节点:jps,DataNode,NodeManager
9. 查看集群情况
hdfs dfsadmin -report
或者查看网页
HDFS:http://192.168.61.111:50070
Yarn:http://192.168.61.111:8088