centos7.3+hdfs3.1.3版本集群搭建

一、准备内容

1.jar包

      jdk1.8

     hadoop3.1.3

2.三台虚拟机,内存均为4G,

 

二、配置步骤

1.三台机器配置机器固定ip

  • 方式1:修改vi /etc/sysconfig/network-scripts/ifcfg-ens32文件
TYPE=Ethernet
BOOTPROTO=static
NAME=ens32
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.200.111
GATEWAY=192.168.200.2
NETMASK=255.255.255.0
DNS1=192.168.200.2

 

 

  • 方式2:进入虚拟机(本人使用root用户),点击应用程序-系统设置-网络-有线-右下角齿轮标签-ipv4,修改完成后需要将 /etc/sysconfig/network-scripts/ifcfg-ens32文件中的onboot改未yes

2.配置环境变量

  • 将jdk和hadoop的压缩包上传到三台虚拟机上
  • 将jdk压缩包解压到/opt/jdk文件夹下 Hadoop解压到/opt/hadoop目录下
#java environment
export JAVA_HOME=/opt/jdk
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin

#hadoop environment
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
  • 修改完成后,执行 source /etc/profile 使文件生效
  • 分别执行java -version 和 Hadoop classpath 确认是否配置成功
  • 注:安装jdk前需要先卸载系统自带的jdk

3.关闭防火墙(centos6和centos7命令不同)

  • systemctl stop firewalld #关闭防火墙
  • systemctl disable firewalld #关闭防火墙开机自启
  • 注:不关闭防火墙会影响节点之间的通信,并且无法页面

4.配置ssh免密登录

  • 修改/etc/hostname文件,设置主机名,本人分别将三个节点命名未:master、node1、node2
  • 修改 /etc/hosts 文件,删除原有内容添加节点的IP 节点名 例子如下
192.168.200.111 master
192.168.200.112 node1
192.168.200.113 node2
  • ssh-keygen -t rsa #生成密钥
  • cd /root/.ssh/
  • cat id_rsa.pub>>authorized_keys #将密钥写入authorized_keys,该操作在master上执行
  • scp - r authorized_keys node1: /root/.ssh/ #将 authorized_keys传递到node1节点上,该操作在master上执行
  • cat id_rsa.pub>>authorized_keys  # 在node1 /root/.ssh/路径上执行
  • scp - r authorized_keys node2: /root/.ssh/ # 在node1 /root/.ssh/路径上执行
  • cat id_rsa.pub>>authorized_keys  # 在node2 /root/.ssh/路径上执行
  • scp - r authorized_keys node1: /root/.ssh/  # 在node2 /root/.ssh/路径上执行
  • scp - r authorized_keys master: /root/.ssh/  # 在node2 /root/.ssh/路径上执行
  • 注:该部分操作时为了让authorized_keys 内能记录所有的节点的id,最后将保存了所有节点id的文件发送给到所有节点上

5.配置hadoop配置文件(该部分操作只在主节点进行即可)

  • mkdir /usr/local/hadoop
  • mkdir /usr/local/hadoop/data
  • mkdir /usr/local/hadoop/data/tmp
  • mkdir /usr/local/hadoop/dfs
  • mkdir /usr/local/hadoop/dfs/data
  • mkdir /usr/local/hadoop/dfs/name
  • mkdir /usr/local/hadoop/tmp
  • cd /opt/hadoop-3.1.3/etc/hadoop/
  • vi hadoop-env.sh文件中加入如下内容
export JAVA_HOME=/opt/jdk
  • vi core-site.xml文件中加入如下内容
 <configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop/tmp</value>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
    </property>
</configuration>
  • vi hdfs-site.xml文件中加入如下内容
<configuration>
    <property>
        <name>dfs.namenode.http-address</name>
        <value>master:50070</value>
    </property>
    <property><!--namenode持久存储名字空间及事务日志的本地文件系统路径-->
        <name>dfs.namenode.name.dir</name>
        <value>/usr/local/hadoop/dfs/name</value>
     </property>
     <property><!--DataNode存放块数据的本地文件系统路径-->
         <name>dfs.datanode.data.dir</name>
         <value>/usr/local/hadoop/dfs/data</value>
     </property>
     <property><!--数据需要备份的数量,不能大于集群的机器数量,默认为3-->
        <name>dfs.replication</name>
        <value>2</value>
    </property>
</configuration>
  • vi yarn-site.xml文件中加入如下内容
<configuration>
    <property><!--NodeManager上运行的附属服务,用于运行mapreduce-->
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>master:8088</value>
    </property>
</configuration>
  • vi mapred-site.xml文件中加入如下内容
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
  • vi workers文件中加入如下内容
master
node1
node2
  • vi /opt/hadoop-3.1.3/sbin/start-yarn.sh、vi /opt/hadoop-3.1.3/sbin/stop-yarn.sh 两个文件中加入如下内容(放在靠前的位置)
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
  • vi /opt/hadoop-3.1.3/sbin/start-dfs.sh和vi /opt/hadoop-3.1.3/sbin/stop-dfs.sh两个文件中加入如下内容(放在靠前的位置)
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
  • 将改的文件全部分发给子节点
scp -r /opt/hadoop-3.1.3/etc/hadoop/ node1:/opt/hadoop-3.1.3/etc/hadoop/
scp -r /opt/hadoop-3.1.3/etc/hadoop/ node2:/opt/hadoop-3.1.3/etc/hadoop/
scp -r /opt/hadoop-3.1.3/sbin/ node1:/opt/hadoop-3.1.3/sbin/
scp -r /opt/hadoop-3.1.3/sbin/ node2:/opt/hadoop-3.1.3/sbin/
scp -r /opt/hadoop-3.1.3/etc/hadoop/* node1:/opt/hadoop-3.1.3/etc/hadoop/
scp -r  /opt/hadoop-3.1.3/etc/hadoop/* node2:/opt/hadoop-3.1.3/etc/hadoop/
  •  执行hadoop classpath 将内容复制,编辑vi /opt/hadoop-3.1.3/etc/hadoop/yarn-site.xml 文件并在configuration中添加如下内容,其中yarn.application.classpath对应的value标签内人为执行hadoop classpath后出现的路径
<property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
</property>
<property>
   <name>yarn.application.classpath</name>
<value>/opt/hadoop/etc/hadoop:/opt/hadoop/share/hadoop/common/lib/*:/opt/hadoop/share/hadoop/common/*:/opt/hadoop/share/hadoop/hdfs:/opt/hadoop/share/hadoop/hdfs/lib/*:/opt/hadoop/share/hadoop/hdfs/*:/opt/hadoop/share/hadoop/mapreduce/lib/*:/opt/hadoop/share/hadoop/mapreduce/*:/opt/hadoop/share/hadoop/yarn:/opt/hadoop/share/hadoop/yarn/lib/*:/opt/hadoop/share/hadoop/yarn/*</value>
</property>
  • 将 /opt/hadoop-3.1.3/etc/hadoop/*分发给所有节点
scp -r /opt/hadoop-3.1.3/etc/hadoop/* node1:/opt/hadoop-3.1.3/etc/hadoop/
scp -r /opt/hadoop-3.1.3/etc/hadoop/* node2:/opt/hadoop-3.1.3/etc/hadoop/
  • 初始化hadoop(所有节点都需要执行)
cd /opt/hadoop/bin
./hadoop namenode -format
  • 启动hadoop(主节点执行即可) 可以通过ip:8088和ip:50070两个端口分别进行管理和数据查看
cd /opt/hadoop-3.1.3/sbin
./start-all.sh

6.hadoop跑自带的wordcount程序

进入hdfs根目录

hdfs dfs -ls /

创建hdfs目录

hdfs dfs -mkdir /input

向hdfs上传一个文件作为跑wordcount的文本

hdfs dfs -put /etc/httpd/conf/httpd.conf /input
cd /opt/hadoop-3.1.3/share/hadoop/mapreduce/
hadoop jar hadoop-mapreduce-examples-3.1.3.jar wordcount /input/httpd.conf /output
hdfs dfs -cat /output/part-r-00000

这里注意自己的版本

如果hadoop运行报错进入安全模式
执行命令退出安全模式

hadoop dfsadmin -safemode leave

执行健康检查,删除损坏掉的block

hdfs fsck  /  -delete


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值