PS:
1.参考博主:http://t.csdnimg.cn/UCcBg(感谢博主回答我的疑惑,让我配置成功,非常感谢)
2.仅个人学习记录,具体什么还不理解(如有不对望提出,一起进步)
3.设置的方法比较笨+小白,步骤繁琐
正文:
1.准备:
(1)机器:
三台Linux虚拟机,CentOS7系统。
(1)网络设置:(次设置Hadoop集群没有设置静态ip)
桥接网络模式,本次设置通过个人手机热点连接电脑,这样ip会固定
(但换其他网络ip会变,不使用校园网,因为校园网一直变变变,换其他手机热点也会变,嗯。。。就用自己手机热点搞吧,重装了三次,每次都没变,很好!!!)
2.创建用户:(三台都要)
注意:
本人在下载中已经设置创建了hadoop用户,修改了主机名,要修改主机名,不然后面步骤会有问题,
本次设置使用的主机名:hadoop1,hadoop2,hadoop3
用户:hadoop(三台都是)
3.配置hosts:(三台都要)
vi /etc/hosts
添加内容:
x.x.x.x 虚拟机1
x.x.x.x 虚拟机2
x.x.x.x 虚拟机3
本人在此设置的是连接网络的那个ip,使用ifconfig查看连接网络的ip,然后三台的ip+主机名添加上去
4.关闭防火墙:(三台都要)
systemctl stop firewalld //本次关闭防火墙
systemctl disable firewalld.service //永远关掉防火墙
5.配置SSH免密
[注意:本人这里是手动的哈哈,代码怎么都配不进去,直接手动修复bug]
第一台(hadoop1):(啊啊啊,这里注意,要用前面创建的hadoop用户,别用root,root和普通用户的ssh不是同一个路径,不然启动也要用root,普通用户直接是免密不了的!)
(1)创建密钥:
ssh-keygen -t rsa
(2)到~/.ssh下面复制到共用密码:
cat id_rsa.pub >> authorized_keys
(3)查看authorized_keys,方便复制粘贴
cat authorized_keys
第二台(hadoop2)和第三台(hadoop3)和上面一样的步骤,然后将三台查看的authorized_keys的合并,就是手动复制粘贴进去,最后三台的密钥都要在authorized_keys里面
(4)设置权限:(三台都要)
sudo chmod 700 /home/hadoop/.ssh
sudo chmod 600 /home/hadoop/.ssh/authorized_keys
这里根据个人设置换,这里的路径是你authorized_keys的路径,如果以管理员root可以忽略这一步,普通用户就要设置,不然也免密不了
(5)检验免密是否成功:(不要密码就ok了)
ssh 主机名
6.安装jdk:(这里步骤有点简略,具体可以看别的博主的)
(1)删除自带的jdk:(要管理员root权限)
yum -y remove python-javapackages.noarch
(2)安装解压
tar -zxvf jdk.tar.gz -C /home/hadoop/
(3)配置环境,环境生效:
vim ~/.bashrc
export JAVA_HOME=/home/hadoop/jdk
export CLASSPATH=$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
source ~/.bashrc
7.安装hadoop:
(1)安装解压:
tar -zxvf hadoop.tar.gz -C /home/hadoop/
(2)配置环境,环境生效:
vim ~/.bashrc
export HADOOP_HOME=/home/hadoop/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source ~/.bashrc
8.配置hadoop文件:(三台一样的配置,其中一些配置要变,比如主机名改成自己的,数据保存路径改成自己的)
文件路径都在:hadoop安装路径/etc/hadoop/
(1)hadoop-env.sh:(自己jdk路径)
export JAVA_HOME=/home/hadoop/jdk
(2)core-site.xml文件:
<configuration>
<!-- 指定 NameNode 的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:8020</value>
</property>
<!-- 指定 hadoop 数据的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop/tmp</value>
</property>
<!-- 配置 HDFS 网页登录使用的静态用户为当前操作系统用户 -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>hadoop</value>
</property>
</configuration>
(3)hdfs-site.xml:
<configuration>
<!-- NameNode web 端访问地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop1:9870</value>
</property>
<!-- 2NameNode web 端访问地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop3:9868</value>
</property>
<!-- 备份数量 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- 打开webhdfs -->
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
(4)yarn-site.xml:
<configuration>
<!-- 指定 MR 走 shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定 ResourceManager 的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop2</value>
</property>
<!-- 环境变量的继承 -->
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
</configuration>
(5)mapred-site.xml:
<configuration>
<!-- 指定 MapReduce 程序运行在 Yarn 上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 历史服务器 web 端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop1:19888</value>
</property>
</configuration>
(6)workers:(自己主机名)
hadoop1
hadoop2
hadoop3
9.启动Hadoop集群:(ps:注意在hadoop安装路径/sbin/下启动服务)
第一次启动hdfs服务时,需要先对NameNode进行格式化。在NameNode所在的hadoop1,
hadoop namenode -format
hadoop1上启动hdfs:
start-dfs.sh
启动yarn服务:(hadoop2上启动)
start-yarn.sh
10.查看服务:
jps #查看服务
DataNode:数据节点
NameNode:名称服务
SecondaryNameNode:备份名称服务