hadoop集群搭建

1.1 安装JDK
环境准备
1.关闭防火墙
先查看防火墙状态systemctl status firewalld.service
如果还在运行则关闭防火墙systemctl stop firewalld.service
禁用防火墙systemctl disable firewalld.service
2.创建目录
mkdir -p /home/hadoop
mkdir -p /home/java
将两个安装包上传到虚拟机中并解压
tar -zxvf /home/hadoop/hadoop-2.7.7.tar.gz
tar -zxvf /home/java/jdk-8u202-linux-x64.tar.gz

3.配置环境变量
vi /etc/profile 编辑环境变量配置文件,添加或修改环境变量
export JAVA_HOME=/home/java/jdk1.8.0_202
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export HADOOP_HOME=/home/hadoop/hadoop-2.7.7
export HADOOP_LOG_DIR=/home/hadoop/hadoop-2.7.7/logs
export YARN_LOG_DIR=$HADOOP_LOG_DIR
export PATH=.:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATH输入 source /etc/profile 更新环境变量
输入 java -version 和 javac -version,看有无版本信息输出


1.2.     hadoop搭建
环境准备
1.创建目录                                                
mkdir -p /home/hadoop/hadoop-2.7.7/tmp              用来存放临时文件
mkdir -p /home/hadoop/hadoop-2.7.7/logs             用来存放日志文件
mkdir -p /home/hadoop/hadoop-2.7.7/hdfs             用来存储集群数据
mkdir -p /home/hadoop/hadoop-2.7.7/hdfs/name   用来存储文件系统元数据
mkdir -p /home/hadoop/hadoop-2.7.7/hdfs/data     用来存储真正的数据
进入hadoop解压后的目录下,找到两个.sh文件,修改JAVA_HOME的值
cd etc/hadoop
vi hadoop-env.sh
export JAVA_HOME=/home/java/jdk1.8.0_202
vi yarn-env.sh
修改JAVA_HOME的路径
export JAVA_HOME=/home/java/jdk1.8.0_202
2.修改核心配置文件
vi core-site.xml

    fs.default.name
   hdfs://master:9000
   指定HDFS的默认名称


   fs.defaultFS
   hdfs://master:9000
   HDFS的URI


   hadoop.tmp.dir
   /home/hadoop/hadoop2.7/tmp
   节点上本地的hadoop临时文件夹

vi hdfs-site.xml

       dfs.namenode.name.dir
       file:/home/hadoop/hadoop2.7/hdfs/name
namenode上存储hdfs名字空间元数据


       dfs.datanode.data.dir
       file:/home/hadoop/hadoop2.7/hdfs/data
datanode上数据块的物理存储位置


       dfs.replication
       1
副本个数,默认是3,应小于datanode机器数量

输入 cp mapred-site.xml.template mapred-site.xml 将mapred-site.xml.template文件复制到当前目录,并重命名为mapred-site.xml
vi mapred-site.xml

   mapreduce.framework.name
   yarn
   指定mapreduce使用yarn框架
   

vi yarn-site.xml

       yarn.resourcemanager.hostname
       master
指定resourcemanager所在的hostname


       yarn.nodemanager.aux-services
       mapreduce_shuffle
       NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行 MapReduce程序

vi slaves删除localhost,改为datanode的主机名

3.克隆虚拟机,克隆三个虚拟机起名为node1,node2,node3.

4.修改主机名。
vi /etc/hostname 修改每一台虚拟机的主机名为master,node1,node2,node3
192.168.184.130 master
192.168.184.131 node1
192.168.184.132 node2
192.168.184.133 node3  改完记得重启。
5.修改每一台主机的/etc/hosts文件

6.配置ssh免密登录
原理:通过创建无密码公钥的方式,将公钥传给对方。使用ssh协议连接时,会寻找authorized_keys文件中存放的公钥,如果有目标主机的公钥则将公钥传给目标主机,目标主机用自己的私钥和公钥进行匹配,正确匹配之后则认为两者可信,即不需要密码就可以登录
实现节点之间免密服务原理:
通过把所有节点的公钥写入authorized_keys文件中,再把这个文件传输给每一台节点,此时所有节点都有了其他节点的公钥,则登录时就不需要输入密码
在每台主机上输入 ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 创建一个无密码的公钥,-t是类型的意思,dsa是生成的密钥类型,-P是密码,’’表示无密码,-f后是秘钥生成后保存的位置

创建完成后,会出现两个文件在/root/.ssh'下
id_dsa          存放私钥
id_dsa.pub   存放公钥

输入 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys 将公钥id_dsa.pub添加进authorized_keys
 
 

执行后会创建authorized_keys文件,这个文件用来放其他节点的公钥
在非master节点上输入 ssh-copy-id -i ~/.ssh/id_dsa.pub master 将自己的公钥传输给master节点。

这时,master节点拥有所有节点的公钥。在master中输入
scp -r /root/.ssh/authorized_keys root@node1:/root/.ssh/
scp -r /root/.ssh/authorized_keys root@node2:/root/.ssh/
scp -r /root/.ssh/authorized_keys root@node3:/root/.ssh/

在每一台主机上输入 chmod 600 authorized_keys 修改文件权

重启服务 service sshd restart
此时每个节点都保存了所有的公钥,节点之间也就可以ssh免密登录了(第一次仍然需要密码)

7.格式化hdfs
hdfs namenode -format 格式化namenode,第一次使用需格式化一次,之后就不用再格式化,如果修改了一些配置文件,则需要重新格式化。(由于配置了环境变量任意位置执行都可以)
8.启动hadoop
start-all.sh,输入yes即可启动

使用jps命令查看节点进程。
Master机器:

Node机器:

     输入http://192.168.184.130:8088/

posted @ 2020-11-12 11:22  X的n次幂  阅读(53)  评论(0)    收藏  举报