hadoop单机集群搭建

BamB00 2019-04-11 00:00:00
Categories: Tags:

0x01 要用的文件列表

hadoop-3.1.2

JDK8.201

centos-7-Minimal-1810

Vmware15

0x02 提示说明

VM和centos7的环境安装就略过

0x03 配置Vmware网络配置选项

这里主要设置的是网关

0x04 Centos网络服务配置

Centos7默认不会打开网络得自己手动打开

# 文件在 /etc/sysconfig/network-scripts/ 下的名为ifcfg-ens** *是数字随机生成的
vi /etc/sysconfig/network-scripts/ifcfg-ens33
#将ONBOOT=NO
改为
ONBOOT=yes

然后输入 service network restart重启网络服务就好

0x05 DNS解析 修改主机名

直接在命令行里面输入三个就好 #这个可以不写但要你要每次都输入IP
echo '192.168.238.128 one' >>/etc/hosts
echo '192.168.238.129 two' >>/etc/hosts
echo '192.168.238.130 three' >>/etc/hosts


在 /etc/resolv.conf 里面添加DNS
vi /etc/resolv.conf 
添加
search localdomain
nameserver DNS # DNS是上面网关IP

修改主机名

vi /etc/sysconfig/newtwork
添加
NETWORKING=yes
HOSTNAME=one
修改完后再 命令行输入
hostname one

0x06 复制机子作为节点机子

右键复制机子–>管理–>克隆

0x07 节点机子设置DNS和修改主机名

操作步骤和0x05步骤一样就不重复步骤了

0x08 设置免密登录

分别在所有机子中设置生成密钥

ssh-keygen -t rsa

全部回车不需要设置多余的

然后在one中进行一下操作

生成公钥并发给各个节点

生成公钥并发给各个节点

cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keysscp /root/.ssh/id_rsa.pub root@node2:/root/.ssh/authorized_keysscp /root/.ssh/id rsa.pub root@node3:/root/.ssh/authorized_keys如果发现authorized_keys不存在就创建这个文件touch /root/.ssh/authorized_koeys

然后再把所有子节点的机子上的authorized_keys添加权限

chmod 644 /root/.ssh/authorized_keys

在主机上测试免密登录

ssh root@two

0x09 安装JDK

用FTP功能这直接上传

个人推荐:MobaXterm

以root用户登录的默认放在/root文件夹下面

tar -xzvf jdk-8u201-liunx-x64.tar.gz -C /usr/local #-C 解压到目标目录

配置环境变量PATH

vi /etc/profile  #在里面末尾加上下面两句
export JAVA_HOME=/usr/local/jdk1.8.0_201
export PATH=$PATH:$JAVA_HOME/bin

接着测试环境

source /etc/profile
java -version

JAVA版本验证

出现就表示JDK配置完成了

0x10 安装Hadoop

上次主机并解压

tar -xzvf hadoop-3.1.2.tar.gz -C /usr/local/hadoop/

配置环境变量

vi /etc/profile  #在里面末尾加上下面两句
export HADOOP_HOME=/usr/local/hadoop/hadoop-3.1.2
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

同样测试环境

source /etc/profile

0x11 配置Hadoop

创建数据存储目录

cd /usr/local/hadoopmkdir tmp var dfs dfs/name dfs/data

设置节点主机

vi workers删除localhost添加twothree

配置hadoop-en.sh

vi /usr/local/hadoop/etc/hadoop/hadoop-en.sh
在#  JAVA_HOME=/usr/java/testing hdfs dfs -ls    一行下面添加如下代码
export JAVA_HOME=/usr/local/java/jdk1.8.201
export HADOOP_HOME=/usr/local/hadoop/hadoop-3.1.2
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

配置Core-site.xml

vi /usr/local/hadoop/etc/hadoop/Core-site.xml
#内容写在<Configuration>这里</Configuration>
<configuration>
#用来指定HDFS文件系统的命名空间
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.85.101:9000</value>
</property>
#用来指定临时数据文件存放的地址
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
#配置操作HDFS的缓存大小
<name>io.file.buffer.size</name>
<value>4096</value>
</property>
</configuration>

配置hdfs-site.xml

vi /usr/local/hadoop/etc/hadoop/hdfs-site.xml
# 指定hdfs保存数据的副本数量
<property>
<name>dfs.replication</name>
<value>2</value>
</property> 
# 块大小
<property>
<name>dfs.blocksize</name>
<value>134217728</value>
</property> 
#HDFS的元数据存储位置
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop/dfs/name</value>
</property>
#HDFS的数据存储位置
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop/dfs/data</value>
</property>
#HDFS的namenode的内部通信地址
<property>
<name>dfs.namenode.http-address</name>
<value>one:50070</value>
</property>
#HDFS的SNN的web ui地址
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>one:50090</value>
</property>
#是否启用HDFS的权限(acl)
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
</configuration>

配置yarn-site.xml

在配置yarn-site.xml之前我们得找到Hadoop的环境变量

在命令行输入hadoop classpath

获取导环境变量后复制

vi /usr/local/hadoop/etc/hadoop/yarn-site.xml
<configuration>
# 指定Yarn的主机(ResourceManager)的地址
<property>
<name>yarn.resourcemanager.hostname</name>
<value>one</value>
</property>
# nomenodeManager获取数据的方式是shuffle
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
# 指定rm的内部通信地址
<property>
<name>yarn.nodemanager.address</name>
<value>one:8032</value>
</property>
# 指定rm的scheduler内部通信地址
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>one:8030</value>
</property>
# 指定rm的resource-tracker内部通信地址
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>one:8031</value>
</property>
# 指定rm的admin内部通信地址
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>one:8033</value>
</property>
# 指定rm的web ui监控地址
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>one:8099</value>
</property>
</configuration>

配置mapred-site.xml

<property>
<name>mapred.job.tracker</name>
<value>one:49001</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/usr/local/hadoop/var</value>
</property>
# 指定mapreduce运行框架
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
#历史服务的通信地址
<property>
<name>mapreduce.jobhistory.address</name>
<value>one:10020</value>
</property>
#历史服务的Web ui地址
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>one:19888</value>
</property>

0x12 复制配置文件到各个子机上

在主机上运行

scp -r /usr/local/java two:/usr/local/java
scp -r /usr/local/hadoop two:/usr/local/hadoop
scp -r /etc/profile two:/etc/
 
scp -r /usr/local/java three:/usr/local/java
scp -r /usr/local/hadoop three:/usr/local/hadoop
scp -r /etc/profile three:/etc/

在各个子机上使用source /etc/profile

0x13 运行Hadoop

在运行之前得格式化各个节点

hdfs namenode -format

在运行完后就可以运行hadoop集群

start-all.sh
最后输入jps

完成

输入http://192.168.238.128:8088可以打开Web端