Hadoop完全分布式

Hadoop完全分布式搭建

Hadoop原理介绍

查看我的另一篇文章:https://blog.csdn.net/weixin_42529806/article/details/84026873

搭建背景说明

  1. 用于学习大数据使用
  2. 只需要一台电脑上(内存至少8G的PC)就可以搭建hadoop的完全分布式(VMware虚拟机*3)
  3. 为什么使用原生hadoop搭建呢
  • 说明1:企业中一般用第三方厂家的hadoop版本(比如:Cloudera的CDH、Hortonworks的HDP等),用起来特别方便
  • 说明2:自己学习,可以用原生hadoop,自己看着文档,手把手的搭建,熟悉各种配置等,有助于对hadoop的深入了解
  1. 需要准备3台虚拟机(用VMware软件创建),Xshell软件,文件传输的神器WinSCP,hadoop、jdk的linux安装包等等(文章下面全都有给地址,直接可以下这些干货)

VMware虚拟机的安装使用

  1. VMware软件地址:https://pan.baidu.com/s/1cYV_QQnecw88ldxS7nNWLQ (有用记得点赞哦)
  2. VMware软件使用方法以及虚拟机安装Ubuntu系统: https://www.cnblogs.com/la-fe/p/7835252.html
  3. 使用Xshell来操作虚拟机:https://ken.io/note/xshell-setup-ssh
    (xshell可以一条命令同时操作多个shell,后面搭建集群过程非常有效)
  4. windows主机和linux虚拟机进行文件传输的神器WinSCP(后面会用到):https://pan.baidu.com/s/1epwMmchcB4hn7GTlw94pIw
  5. 使用VMware软件配置3台机子,linux系统使用Udbuntu16.04.5

虚拟机准备

  1. 3台虚拟机
主机名ip
master192.168.50.129
slave1192.168.50.130
slave2192.168.50.131
  1. 配置所有机器的hostname和hosts
1. vim /etc/hostname
#(三台主机名分别改master slave1 slave3)

2. vim /etc/hosts
192.168.50.129 master
192.168.50.130 slave1
192.168.50.131 slave2
#注意:把原来的127.0.0.1 localhost删除了,不然后面可能会出问题
3. 重启生效
  1. 配置ssh免密登陆
1. sudo apt-get install openssh-server #安装ssh
2. ssh-keygen -t rsa -P ''    然后按回车
    #说明:以rsa算法,生成公钥和私钥,-P '',表示是空密码;该命令执行完后,会在个人主目录下生产.ssh目录,里面会有两个文件,id_rsa(私钥)和id_rsa.pub(公钥);该目录为隐藏目录,可用以下命令查看:ls -lah
3. cd .ssh/
4. ls
5. cat id_rsa.pub >> authorized_keys #进入.ssh目录下把公钥追加到 authorized_keys文件中
ssh root@192.168.50.130 cat ~/.ssh/id_rsa.pub>> authorized_keys    
ssh root@192.168.50.131 cat ~/.ssh/id_rsa.pub>> authorized_keys 
#把slave1、slave2公钥合并到authorized_keys 中
6. scp authorized_keys 192.168.50.130:/root/.ssh/  
   scp authorized_keys 192.168.50.131:/root/.ssh/
   #authorized_keys远程copy到slave1和slave2之中
7. chmod 600 authorized_keys #修改文件权限(读写权限)
8.service sshd restart  #重启操作, 重新启动ssh服务
9. 本机测试,ssh localhost,如果不需要密码可以登录,说明连接成功。
10. 测试能否ssh免密登录

组件准备

  1. hadoop生态圈组件
  1. 安装包上传到linux虚拟机(使用WinSCP,上面提到的)
  2. 安装包上传到/home下的software
1. mkdir /home/software
2. 上传则使用WinSCP软件哈

开始搭建hadoop分布式集群

安装jdk和hadoop

  1. 解压
cd /home/software
mkdir /opt/java_env
mkdir /opt/hadoop
tar -zxvf jdk1.8.....
tar -zxvf hadoop2.7.3
mv jdk1.8..... /opt/java_env/jdk1.8
mv hadoop2.7.3 /opt/hadoop/hadoop2.7.3
  1. 配置jdk和hadoop环境变量
1. 编辑 vim /etc/profile  之后按i键
2. 在最后面加上,上面的别动哈
export JAVA_HOME=/opt/java_env/jdk1.8
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
export HADOOP_HOME=/opt/hadoop/hadoop-2.7.3
export PATH=$PATH:$HADOOP_HOME/sbin
export PATH=$PATH:$HADOOP_HOME/bin
3. 按ESC
4. :wq---保存退出
5. source /etc/profile   使环境变量生效
6. java -version,查看jdk环境变量是否配置成功
(如果显示错误,则可能是jdk的版本和linux系统版本不对应  64位(32位)jdk---64位(32位)linux)

7. 配置hadoop-env.sh、yarn-env.sh,在Hadoop安装目录下
vim etc/hadoop/hadoop-env.sh
vim etc/hadoop/yarn-env.sh  
进去加入export JAVA_HOME=/opt/java_env/jdk1.8(jdk安装路径)
  1. 配置基本的xml(配置文件在hadoop2.7.3下的/etc/hadoop/目录下的)
  • core-site.xml
vim core-site.xml

<configuration>
        <property>
            <name>fs.defaultFS</name> <!--NameNode 的URI-->
        <value>hdfs://mater:9000</value>
    </property> 
    <property> 
            <name>hadoop.tmp.dir</name> <!--hadoop临时文件的存放目录-->
        <value>/opt/hadoop/hadoop-2.7.3/temp</value>
    </property> 
</configuration>



  • hdfs-site.xml
vim hdfs-site.xml

<configuration>
        <property> <!--namenode持久存储名字空间及事务日志的本地文件系统路径-->
               <name>dfs.namenode.name.dir</name>
            <value>/opt/hadoop/hadoop-2.7.3/dfs/name</value>
          <!--目录无需预先创建,会自动创建-->
      </property>

      <property>  <!--DataNode存放块数据的本地文件系统路径-->
            <name>dfs.datanode.data.dir</name>
            <value>/opt/hadoop/hadoop-2.7.3/dfs/data</value>
      </property>

      <property>  <!--数据需要备份的数量,不能大于集群的机器数量,默认为3-->
            <name>dfs.replication</name>
            <value>2</value>
      </property>

      <property>
            <name>dfs.namenode.secondary.http-address</name>
            <value>master:9001</value>
      </property>
      <property>  <!--设置为true,可以在浏览器中IP+port查看-->
            <name>dfs.webhdfs.enabled</name>
            <value>true</value>
        </property>
</configuration>

  • mapred-site.xml
先 cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml

 <configuration>
    <property> <!--mapreduce运用了yarn框架,设置name为yarn--> 
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
    </property> 
    <property> <!--历史服务器,查看Mapreduce作业记录--> 
      <name>mapreduce.jobhistory.address</name> 
      <value>master:10020</value> 
    </property> 
    <property> 
      <name>mapreduce.jobhistory.webapp.address</name> 
      <value>master:19888</value> 
    </property> 
</configuration>

  • yarn-site.xml
vim yarn-site.xml

<configuration>
        <property> <!--NodeManager上运行的附属服务,用于运行mapreduce-->
      <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> <!--ResourceManager 对客户端暴露的地址-->
      <name>yarn.resourcemanager.address</name>
      <value>master:8032</value>
    </property>
    <property> <!--ResourceManager 对ApplicationMaster暴露的地址-->
      <name>yarn.resourcemanager.scheduler.address</name>
      <value>master:8030</value>
    </property>
    <property> <!--ResourceManager 对NodeManager暴露的地址-->
      <name>yarn.resourcemanager.resource-tracker.address</name>
      <value>master:8031</value>
    </property>
    <property> <!--ResourceManager 对管理员暴露的地址-->
      <name>yarn.resourcemanager.admin.address</name>
      <value>master:8033</value>
    </property>
    <property> <!--ResourceManager 对外web暴露的地址,可在浏览器查看-->
      <name>yarn.resourcemanager.webapp.address</name>
      <value>master:8088</value>
    </property>
</configuration>


  1. 配置slaves文件
vim slaves
1. 去除默认的localhost,
2. 加入
slave1
slave2
3. :wq保存退出
  1. 通过远程复制命令scp,将配置好的Hadoop复制到各个节点对应位置
  scp -r /opt/hadoop/hadoop-2.7.3 192.168.50.130:/opt/hadoop-2.7.3 
  scp -r /opt/hadoop/hadoop-2.7.3 192.168.50.131:/opt/hadoop-2.7.3 
  1. Hadoop的启动与停止
  • 在Master服务器启动hadoop,从节点会自动启动,进入Hadoop目录下,
cd /opt/hadoop/hadoop2.7.3
bin/hdfs namenode -format   #进行hdfs格式化
sbin/start-all.sh   #进行启动
sbin/start-dfs.sh、sbin/start-yarn.sh   #也可以分开启动

master上输入jps:看到ResourceManager、NameNode、SecondaryNameNode进程
slave 上输入命令:jps, 看到DataNode、NodeManager进程

  1. windows配置
接下来配置本地hosts,编辑
C:\Windows\System32\drivers\etc的hosts文件,加入
192.168.172.71   master
192.168.172.72   slave1
192.168.172.73   slave2

在浏览器中输入http://master:50070查看master状态
  1. 停止hadoop,进入Hadoop目录下,输入命令:sbin/stop-all.sh,即可停止master和slave的Hadoop进程

常见问题

  1. hadoop上传文件报错(比如说:RemoteException)
    查错步骤
  • jps查看进程都启了没

  • hadoop dfsadmin -report 查看磁盘使用情况 都是空的就是错的

  • 另外,原因可能是使用hadoop namenode -format格式化时格式化了多次造成那么spaceID不一致

    解决办法

  • stop-all.sh #停止集群

  • rm -rf /hadoop/… #删除在hdfs中配置的data目录(即在core-site.xml中配置的hadoop.tmp.dir以及hdfs-site.xml中对应的文件,包括logs)下面的所有数据

  • hadoop namenode -format #重新格式化

  • start-all.sh #重启集群

  • 再次hadoop dfsamin -report查看磁盘使用情况,如下图就正常了
    在这里插入图片描述

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值