Hadoop集群搭建(CentOS7 + Hadoop2.7.6
一、准备事项:
1、Centos7-x64 2、VMware 3、Hadoop-2.7.6 4、jdk-linux-1.8
二、虚拟机中安装Centos7
这部分不再讲解,注意的是电脑需要再BIOS中开启支持虚拟化,安装时勾选图形界面,设置用户名为Hadoop,密码也设置为Hadoop。root账户密码设置为123456(这里可以根据需要自行设置,确保能记住密码就行)
三、修改网络配置
1、修改虚拟机网络配置
image.png
2、打开VMWare -编辑-虚拟网络编辑器
image.png
3、记录本地IP
点击NAT设置显示如下图
image.png
点击DHCP设置显示如下图
image.png
记录自己IP地址的范围和网关IP
4、集群对应IP与主机名
第三个步骤已经知道本地IP范围(128-255),所以集群对应的IP只需在此范围内即可
我们采用4台机子,注意现在只需要配好一台,后面再进行克隆操作可以减少很多重复操作。
主机名 ip 对应角色
master 192.168.32.130 NameNode
slave1 192.168.32.131 DataNode
slave2 192.168.32.132 DataNode
slave3 192.168.32.133 DataNode
四、修改CentOS7的网络配置文件
1、打开CentOS中终端
执行如下命令 cd /etc/sysconfig/network-scripts
输入 ls ,显示如下
image.png
2、修改ifcfg-ens33文件(有的显示是ifcfg-eth0)
执行 sudo vim ifcfg-ens33
修改内容:
image.png
或许你还不会使用vim,点击“i”进入输入模式,编辑完成后按Esc退出编辑模式
然后按ZZ(连续按两次大Z,按住shift+z)保存并退出。
说一下其他简单命令:
非编辑模式下 :
输入 u 执行撤销操作
输入:q! 强制退出不保存
输入:qw 强制保存并退出
4、修改主机名与对应ip
执行 sudo vim /etc/hosts 修改为如下:(对应你自己设置的ip与主机名)
image.png
五、安装Java与hadoop
1、将下载的jdk与hadoop放入到usr目录的“local”文件夹内
2、cd 下载 执行 sudo tar -zxvf hadoop-2.7.6.tar.gz -C /usr/local
此操作会解压hadoop到/usr/local 目录下
3、同理执行 sudo tar -zxvf jdk-8u161-linux-x64.tar.gz -C /usr/local
会解压jdk到对应目录下
4、配置jdk与hadoop的环境变量
执行 sudo vim /etc/profile
在文件底部添加:
#JDK
export JAVA_HOME=/usr/local/jdk1.8.0_161 //你jdk的目录
export CLASSPATH=.:%JAVA_HOME%/lib/dt.jar:%JAVA_HOME%/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
#Hadoop
export HADOOP_HOME=/usr/local/hadoop-2.7.6 //hadoop的目录
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
六、关闭防火墙:
1、切换到root账户 输入 su root
2、关闭防火墙
CentOS 7.0默认使用的是firewall作为防火墙
关闭防火墙:
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
3、禁止开机启动
执行 sudo vim /etc/selinux/config
修改参数 SELINUX=disabled
七、克隆虚拟机、
1、在关机状态下,另外克隆出3个虚拟机
image.png
2、修改每个虚拟机对应的网络配置文件
执行sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33
3、修改每个虚拟机用户名
方式一:
切换到root用户 每个终端分别执行(注意:每台机子执行对应的命令)
master中执行 echo master > /etc/hostname
slave1中执行 echo slave1 > /etc/hostname
slave2中执行 echo slave2 > /etc/hostname
slave2中执行 echo slave2 > /etc/hostname
方式二:
或者修改/etc/hostname为对应的主机名也可以
执行 sudo vim /etc/hostname
添加主机名在该文件中
image.png
4、然后ping一下是否能互通(可能需要重启一下)
显示如下则可以了
image.png
八、配置SSH免密码登录
在用户根目录下配置SSH免密码登陆
1、生成密钥,并拷贝在各主机上,master主机上执行以下命令:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
ssh-copy-id slave1
ssh-copy-id slave2
ssh-copy-id slave3
2、测试主机之间登陆需要密码
image.png
九、配置集群:
进入hadoop目录 /usr/local/hadoop-2.7.6
创建如下目录:
mkdir tmp
mkdir hdfs
mkdir hdfs/name
mkdir hdfs/data
在/usr/local/hadoop-2.7.6/etc/hadoop目录下修改如下文件:
1、core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop-2.7.6/tmp</value>
</property>
</configuration>
2、hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop-2.7.6/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop-2.7.6/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
</configuration>
3、mapred-site.xml (目录找不到 需要将mapred-site.xml.template进行拷贝重命名)
执行sudo cp mapred-site.xml.template mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
4、yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
</configuration>
5、slaves
slave1
slave2
slave3
6、hadoop-env.sh中设JAVA_HOME
修改/etc/hadoop/hadoop-env.sh中设JAVA_HOME。
应当使用绝对路径。
export JAVA_HOME=$JAVA_HOME //错误,不改会报错
export JAVA_HOME=/usr/local/jdk1.8.0_161 //正确,应该这么改
十、远程分发到各主机上
我们只需
进入/usr/local 目录
将整个hadoop-2.7.6 复制到 其他三台机器上
$PWD 是当前的目录,意思是将 hadoop-2.7.6整个文件夹复制到slave1、slave2、slave3 相同路径下
sudo scp -r hadoop-2.7.6/ slave1:$PWD
sudo scp -r hadoop-2.7.6/ slave2:$PWD
sudo scp -r hadoop-2.7.6/ slave3:$PWD
十一、启动集群
1、格式化文件系统
hadoop namenode -format
2、启动dfs 服务和yarn 服务
start-dfs.sh
start-yarn.sh
3、验证是否启动成功
如下图:
image.png
如果你也这样显示,那么恭喜你集群搭建成功。
十二、进入管理页
1、浏览器输入master:8088
image.png
2、浏览器输入master:50070
image.png十三、在win下访问
需要修改hosts文件将主机名和对应IP地址添加在里面
3、测试
创建linux 文件目录: mkdir ~/hadoopinputfile
创建hadoop hdfs input目录: bin/hadoop fs -mkdir /input
查看hadoop hdfs : bin/hadoop fs -ls /
上传文件到hdfs input目录: bin/hadoop fs -put ~/hadoopinputfile/* /input
查看hadoop hdfs input目录 : bin/hadoop fs -ls /input
运行hadoop自带的wordcount: bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.6.jar wordcount /input /output
查看hdfs输出文件夹: bin/hadoop fs -ls /output
查看hdfs输出文件内容: bin/hadoop fs -cat /output/part-r-00000
好啦,恭喜你集群搭建成功了,如有问题欢迎留言!。