Hadoop集群搭建及网络ip配置@TOC
1、hadoop运行环境配置
此处需要三台虚拟机,以为HDFS的NameNode、SecondaryNameNode和Yarn的ResourceManager比较耗费资源,现实开发中也是不会配置在同一台服务器,电脑内存最好8G或以上,不然就算虚拟机开启的是命令界面到时候启动集群后也会卡
- 虚拟机网络设置为NAT模式
重新启动系统。
[[email protected] ~]# sync
[[email protected] ~]# reboot - 克隆虚拟机
点击下一步后会显示如下
然后启动虚拟机 - 修改网络ip
(1) 在终端命令窗口中输入
[[email protected] /]#vim /etc/udev/rules.d/70-persistent-net.rules
进入如下页面删除eth0行,将eth1修改为eth0,同时复制物理ip地址
(2)修改ip地址
[[email protected] /]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
修改前
(注意ip地址应和虚拟机中的网络地址前三个数一样,否则会导致连不了网,后面那个就不能同)
修改后
(3)执行以下命令**网络
[[email protected] /]# service network restart
(4)如果报错,重启虚拟机
[[email protected] /]# reboot
- 修改主机名
(1)进入Linux系统查看本机的主机名。通过hostname命令查看。
[[email protected] /]# hostname
(2)如果感觉此主机名不合适,我们可以进行修改。通过编辑/etc/sysconfig/network文件。
[[email protected]~]# vi /etc/sysconfig/network
(3)打开此文件后,可以看到主机名。修改此主机名为我们想要修改的主机名
修改文件中主机名称
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME= hadoop101
注意:主机名称不要有“_”下划线
(4)保存退出
(5)打开/etc/hosts
[[email protected] ~]# vim /etc/hosts
添加如下内容(IP地址和主机名应和自己配置的对应)
192.168.61.101 hadoop101
192.168.61.102 hadoop102
192.168.61.103 hadoop103
(6)并重启设备重启后查看主机名,已经修改成功
- 关闭防火墙
(1)查看防火墙开机启动状态
[[email protected] ~]# chkconfig iptables --list
(2)关闭防火墙
[[email protected] ~]# chkconfig iptables off
- 在opt目录下创建文件
(1)创建master用户
在root用户里面执行如下操作
[[email protected] opt]# adduser master
[[email protected] opt]# passwd master
更改用户 test 的密码 。
新的 密码:
无效的密码: 它没有包含足够的不同字符
无效的密码: 是回文
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
(2)设置master用户具有root权限
[[email protected] master]# vi /etc/sudoers
找到下面一行,在root下面添加一行,如下所示:
#Allow root to run any commands anywhere
root ALL=(ALL) ALL
masterALL=(ALL) ALL
修改完毕,现在可以用master帐号登录,然后用命令 su - ,即可获得root权限进行操作。
(3)在/opt目录下创建文件夹
a.在root用户下创建module、software文件夹
[[email protected] opt]# mkdir module
[[email protected] opt]# mkdir softwar
b.修改module、software文件夹的所有者
[[email protected] opt]# chown master:master module
[[email protected] opt]# chown master:master sofrware
- 安装jdk
(1)卸载现有jdk
查询是否安装java软件:[[email protected] opt]# rpm -qa|grep java
如果安装的版本低于1.7,卸载该jdk:[[email protected] opt]# rpm -e 软件包
(2)自行下载一个jdk和hadoop[[email protected]]# ls
hadoop-2.7.2.tar.gz jdk-8u144-linux-x64.tar.gz
(3)解压jdk到/opt/module目录下
[[email protected]]# tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/module/
(4)配置jdk环境变量
a.先获取jdk路径:[[email protected] jdk1.8.0_144]# pwd
/opt/module/jdk1.8.0_144
b.打开/etc/profile文件:[[email protected] jdk1.8.0_144]# vi /etc/profile
在profie文件末尾添加jdk路径:
##JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=JAVA_HOME/bin
保存后退出:
:wq
c.让修改后的文件生效:[[email protected] jdk1.8.0_144]# source /etc/profile
d.测试jdk安装成功[[email protected] jdk1.8.0_144]# java -version
java version “1.8.0_144”
(如果java -version不可以用就重启)
- 安装Hadoop
(1)进入到Hadoop安装包路径下:
[[email protected] ~]# cd /opt/software/
(2)解压安装文件到/opt/module下面[[email protected] software]# tar -zxf hadoop-2.7.2.tar.gz -C /opt/module/
(3)在/opt/module/hadoop-2.7.2/etc/hadoop路径下配置hadoop-env.sh
a) Linux系统中获取jdk的安装路径:[[email protected] jdk1.8.0_144]# echo $JAVA_HOME
/opt/module/jdk1.8.0_144
b) 修改hadoop-env.sh文件中JAVA_HOME 路径:[[email protected] hadoop]# vi hadoop-env.sh
修改JAVA_HOME如下
export JAVA_HOME=/opt/module/jdk1.8.0_144
(4)将hadoop添加到环境变量
获取hadoop安装路径:[[email protected] hadoop101 hadoop-2.7.2]# pwd
/opt/module/hadoop-2.7.2
打开/etc/profile文件:[[email protected] hadoop101 hadoop-2.7.2]# vi /etc/profile
在profie文件末尾添加jdk路径:(shitf+g)
##HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
保存后退出:
:wq
让修改后的文件生效:[[email protected] hadoop101 hadoop-2.7.2]# source /etc/profile
重启(如果hadoop命令不能用再重启): [[email protected] hadoop101 hadoop-2.7.2]# reboot
修改/opt目录下的所有文件所有者为master[[email protected] opt]# chown master:master -R /opt/
切换到atguigu用户[[email protected] opt]# su master
#一般不会用root
安装三台虚拟机都一致为以上这样的步骤
2、完全分布式部署
-
SSH无密码登录(为了集群之间通信)
(1)基本语法
ssh 另一台电脑的ip地址
(2)无**配置
进入到我的home目录[[email protected] opt]$ cd ~/.ssh
生成公钥和私钥:[[email protected] .ssh]$ ssh-****** -t rsa
然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)将公钥拷贝到要免密登录的目标机器上
[[email protected] .ssh]$ ssh-copy-id hadoop102
[[email protected] .ssh]$ ssh-copy-id hadoop103
按照以上的这些步骤配置ResourceManager所在的虚拟机无密登录另外两台,
其中NameNode所在的虚拟机还要切换到root账户配置一次(此处是hadoop101要切换root账户配置)
- 集群规划
- 配置文件
(1)core-site.xml
[[email protected] hadoop]$ vi core-site.xml
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop101:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
(2)Hdfs
[[email protected] hadoop]$ vi hadoop-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
(3)hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop103:50090</value>#注意此处为secondaryNameNode的主机地址
</property>
</configuration>
(4)slaves(告诉namenode有几个节点)
[[email protected] hadoop]$ vi slaves
hadoop101
hadoop102
hadoop103
(5)yarn-env.sh
[[email protected] hadoop]$ vi yarn-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
(6)yarn-site.xml
[[email protected] hadoop]$ vi yarn-site.xml
<configuration>
<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop102</value>#注意此处为resourcemanager的主机
</property>
</configuration>
[[email protected] hadoop]$ vi mapred-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
(8)(对mapred-site.xml.template重新命名为) mapred-site.xml
[[email protected] hadoop]$ mv mapred-site.xml.template mapred-site.xml
[[email protected] hadoop]$ vi mapred-site.xml
(9)mapred-site.xml
[[email protected] hadoop]$ vi mapred-site.xml
<configuration>
<!-- 指定mr运行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
每台机器都是如上配置几个文件
3、集群启动及测试
如果集群是第一次启动,需要格式化namenode
[[email protected] hadoop-2.7.2]$ bin/hdfs namenode -format
- 启动HDFS并查看
[[email protected] hadoop-2.7.2]$ sbin/start-dfs.sh
[[email protected] hadoop-2.7.2]$ jps #查看节点
4166 NameNode
4482 Jps
4263 DataNode
[[email protected] hadoop-2.7.2]$ jps
3218 DataNode
3288 Jps
[[email protected] hadoop-2.7.2]$ jps
3221 DataNode
3283 SecondaryNameNode
3364 Jps
- 启动yarn
[[email protected] hadoop-2.7.2]$ sbin/start-yarn.sh
注意:Namenode和ResourceManger如果不是同一台机器
不能在NameNode上启动 yarn,应该在ResouceManager所在的机器上启动yarn。