(单机)CentOS 7_64位系统下搭建Hadoop_2.8.0分布式环境

news/2024/11/9 18:17:19

准备条件:

CentOS 7 64位操作系统 | 选择minimal版本即可(不带可视化桌面环境),也可以选择带完整版
Hadoop-2.8.0 | 本文采用的是Hadoop-2.8.0版本。
JDK1.8 | 本文采用jdk-8u131-linux-x64.tar.gz版本。


- 解压并配置JDK并配置Hadoop

1. 将下载好的jdk放入/usr 下并在/usr目录下新建java目录

[root@localhost /]# cd /usr
[root@localhost usr]# mkdir java
[root@localhost usr]# cd /usr/java/jdk1.8

进入该目录,并解压jdk到当前文件夹

  tar -xzvf jdk-8.tar.gz 

解压得到文件夹修改文件夹名为jdk1.8以方便使用。
修改JAVA环境变量:
编辑java环境 vi ~/.bash_profile
添加如下命令:

export JAVA_HOME=/usr/java/jdk1.8.0_121

export PATH=$JAVA_HOME/bin:$PATH

clipboard.png

执行source ~/.bash_profile 使变量生效

2. 解压hadoop-2.8.0
将下载好的Hadoop压缩包解压到目标文件夹下,(本文解压目录为:/usr/local
修改解压后得到Hadoop的文件夹名为:Hadoop-2.8.0 并得到如下文件:

clipboard.png

Hadoop不需要安装,下面进行环境配置


下面的修改过程可使用vi命令,或者vim命令,或使用xftp直接对文件进行修改

  • 再次修改bash_profile 添加hadoop的文件路径:
    加上之前修改的配置的jdk环境,改该文件整体修改为:

PATH=$PATH:$HOME/bin
export PATH
export JAVA_HOME=/usr/java/jdk1.8
export HADOOP_HOME=/usr/local/hadoop-2.8.0
export PATH=$JAVA_HOME/bin:$PATH:$HOME/bin:$HADOOP_HOME/bin

clipboard.png

再次执行 source ~/.bash_profile 使得文件立即生效

  • 修改etc/hadoop/core-site.xml将configurarion标签修改为:
    注意: 192.168.0.181是本文的测试地址,相应的,需要修改成自己虚拟机的ip地址,如果虚拟机不是桥接方式,则可以改为:127.0.0.1 9000是Hadoop的默认端口,建议先不要修改

        <configuration>
             <property>
                <name>fs.defaultFS</name>
                <value>hdfs://192.168.0.181:9000</value>
            </property>
            <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/usr/local/hadoop-2.8.0/tmp</value>
            </property>
            <property>
                <name>io.file.buffer.size</name>
                <value>131702</value>
            </property>
            <property>
                <name>hadoop.proxyuser.hadoop.hosts</name>
                <value>*</value>
            </property>
            <property>
                <name>hadoop.proxyuser.hadoop.groups</name>
                <value>*</value>
            </property>
        </configuration>
  • 修改etc/hadoop/hdfs-site.xml

       <configuration>
           <property>
               <name>dfs.namenode.name.dir</name>
               <value>file:/usr/local/hadoop-2.8.0/hdfs/name</value>
           </property>
           <property>
               <name>dfs.datanode.data.dir</name>
               <value>file:/usr/local/hadoop-2.8.0/hdfs/data</value>
           </property>
           <property>
               <name>dfs.replication</name>
               <value>3</value>
           </property>
           <property>
               <name>dfs.namenode.secondary.http-address</name>
               <value>192.168.0.181:9001</value>
           </property>
           <property>
               <name>dfs.webhdfs.enabled</name>
               <value>true</value>
           </property>
            <property>
               <name>dfs.permissions</name>
               <value>false</value>
             </property>  
       </configuration>

    以上,分别配置的是相应的几个节点和安全认证,文件目录会在服务开启时自动创建

dfs.permissions设置为false可以允许完全分布式模式下的多机访问
  • 修改etc/hadoop/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.auxservices.mapreduce.shuffle.class</name>
               <value>org.apache.hadoop.mapred.ShuffleHandler</value>
           </property>
           <property>
               <name>yarn.resourcemanager.address</name>
               <value>192.168.0.181:8032</value>
           </property>
           <property>
               <name>yarn.resourcemanager.scheduler.address</name>
               <value>192.168.0.181:8030</value>
           </property>
           <property>
               <name>yarn.resourcemanager.resource-tracker.address</name>
               <value>192.168.0.181:8031</value>
           </property>
           <property>
               <name>yarn.resourcemanager.admin.address</name>
               <value>192.168.0.181:8033</value>
           </property>
           <property>
               <name>yarn.resourcemanager.webapp.address</name>
               <value>192.168.0.181:8088</value>
           </property>
           <property>
               <name>yarn.nodemanager.resource.memory-mb</name>
               <value>6078</value>
           </property>
       </configuration>
    
  • 修改etc/hadoop/hadoop-env.sh

       # The java implementation to use.

    export JAVA_HOME=/usr/java/jdk1.8

       以上修改JAVA_HOME为绝对路径
       

    clipboard.png

  • 修改 etc/hadoop/mapred-site.xml
    注意: etc/hadoop/目录下并没有这个xml文件,仔细查找,有个mapred-site.xml.template把这个文件复制,重命名为 mapred-site.xml并修改为:

            <configuration>
                <property>
                    <name>mapreduce.framework.name</name>
                    <value>yarn</value>
                </property>
                <property>
                    <name>mapreduce.jobhistory.address</name>
                    <value>192.168.0.181:10020</value>
                </property>
                <property>
                    <name>mapreduce.jobhistory.webapp.address</name>
                    <value>192.168.0.181:19888</value>
                </property>
            </configuration>
  • 修改 etc/hadoop/yarn-env.sh
    在其中找到 export JAVA_HOME 并去掉注释,编辑java地址 export JAVA_HOME=/usr/java/jdk1.8

clipboard.png

  • 修改etc/hadoop/slaves
    添加当前主机ip

clipboard.png

至此,基本配置已经完毕

3. 列表项目

hadoop目录下执行如下指令,进行编译

 ./bin/hdfs namenode –format

clipboard.png

clipboard.png
出现如上图,表示编译成功。

4. 关闭防火墙:
关闭防火墙服务systemctl stop firewalld.service
使防火墙服务不随机器启动systemctl disable firewalld.service
开启Hadoop服务

./sbin/start-all.sh

clipboard.png
输入jps查看相关节点是否开启
打开浏览器:地址栏输入http://192.168.0.181:8088

clipboard.png

使用过程中遇到的问题:

  • 问题一:nameNode节点无法启动,jps目录缺少相应活动程序
    在第一次格式化dfs后启动并使用了Hadoop,后来又重新执行了格式化命令hdfs namenode –format
    这时namenodeclusterID会重新生成,而datanodeclusterID 保持不变。
    从而导致两者的id不一致,出现一系列错误。
    解决办法:
    hadoop/hdfs目录下分别查看data/current下的VERSIONname/current下的VERSION文件对比两文件中的clusterID是否相同,若不同,使用name/current下的VERSION中的clusterID覆盖data/current下的clusterID. 修改后重新启动Hadoop即可

  • 问题二:如何配置单机互信?
    每次启动和关闭Hadoop的时候,都需要频繁输入多次密码,通过配置单机互信或者多机互信来简化操作:
    解决办法:
    使用指令:ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
    随后:cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
    并执行:chmod 600 .ssh/authorized_keys
    即可。

  • 问题三:在完全分布式模式下运行失败,无法登陆或没有访问权限
    解决办法:
    修改etc/hadoop/hdfs-site.xml
    添加

    <property>
          <name>dfs.permissions</name>
          <value>false</value>
    </property> 
    

http://www.niftyadmin.cn/n/3093664.html

相关文章

Centos7中超简单的Docker入门

为什么80%的码农都做不了架构师&#xff1f;>>> ### 使用yum安装docker yum install docker-io -y### 直接yum安装&#xff0c;安装成功后查看版本 docker -v### 启动docker service docker start### 设置开机启动 chkconfig docker on### 使用腾讯国内镜像源 echo…

缺陷模板

转载于:https://www.cnblogs.com/ysjt/p/6515123.html

taro 如何使用dom_如何在taro的map循环中使用if条件渲染

在taro的jsx中&#xff0c;鉴于编译的机制&#xff0c;官方明确的表示了不能在map循环中使用if循环&#xff0c;但是呢&#xff0c;官方也给出了解决办法&#xff0c;那就是提取变量或者是用三目运算嵌套的方法&#xff1a;链接奉上&#xff1a;https://github.com/NervJS/taro…

Flask+JQuery Validation 插件+Ajax进行表单的验证

在Flask web开发实践中&#xff0c;常常会涉及到表单的提交和验证&#xff0c;flask的插件flask-wtf提供了很多表单验证的方法&#xff0c;但是目前所知这些表单验证都需要提交后再验证&#xff0c;不能做到当用户输入完用户名就能检查用户名格式是否正确 最近学习了点Jquery和…

cell自适应高度的简单写法

2019独角兽企业重金招聘Python工程师标准>>> self.myTableView.estimatedRowHeight 70; self.myTableView.rowHeight UITableViewAutomaticDimension; 转载于:https://my.oschina.net/u/2519763/blog/854030

Windows 10 Mobile 在 WP 阵营获得 4.7% 份额

著名广告服务商AdDuplex今天发布了Windows Phone的市场数据&#xff0c;数据抓取9月21日当天24小时的状况。其中比较值得关注的是&#xff0c;Windows 10 Mobile占有率在Windows手机阵营中相较上个月又有上涨&#xff0c;达到了4.7%&#xff0c;相比上个月涨了1.4%。考虑到该系…

hibernate笔记(二)ORM基础

2019独角兽企业重金招聘Python工程师标准>>> 对象关系映射(ORM):Hibernate ORM&#xff0c;其作用就是去映射对象和关系型数据库的&#xff0c;以达到程序中的业务逻辑和数据访问组件相分离。 Hibernate并不能提高对数据库的查询性能&#xff0c;我个人觉得使用它可…

陈松松:新手学习视频制作先学什么软件比较合适

每个视频&#xff0c;都是你的金牌业务员这是我写的第68篇视频营销原创文章与其搜索十年&#xff0c;不如花一年的时间学习&#xff0c;去赚9年的高薪&#xff01;最近几天上网不方便&#xff0c;没有及时更新视频营销原创文章和视频&#xff0c;也没有及时通知大家&#xff0c…