• 第三篇 hadoop安装


    前期准备

    需要把hadoop-2.7.3.tar.gz拷贝到/usr/local/src/目录下,并进行解压
    进入到/usr/local/src/目录下进行解压命令

    tar -zxvf hadoop-2.7.3.tar.gz
    
    • 进入到/usr/local/src/hadoop-2.7.3/etc/hadoop/目录修改对应文件
      core-site.xml文件如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <!--关注微信公众号:阿布的进击-->
    <!--文件:core-site.xml -->
    <!--参考地址 http://hadoop.apache.org/docs/r2.7.3/-->
    <configuration>
    	<property>
    		<name>fs.defaultFS</name>
    		<value>hdfs://master:9000</value>
    		<description>用来指定默认的文件系统</description>
    	</property>
    	<property>
    		<name>hadoop.tmp.dir</name>
    		<value>file:/usr/local/src/hadoop-2.7.3/tmp</value>
    		<description>hadoop临时文件存放目录</description>
    	</property>
    </configuration>
    

    hdfs-site.xml文件如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <!--关注微信公众号:阿布的进击-->
    <!--文件:hdfs-site.xml -->
    <!--参考地址 http://hadoop.apache.org/docs/r2.7.3/-->
    <configuration>
    	<property>
    		<name>dfs.namenode.secondary.http-address</name>
    		<value>master:9001</value>
    		<description>secondaryNamenode地址和端口</description>
    	</property>
    	<property>
    		<name>dfs.namenode.name.dir</name>
    		<value>file:/usr/local/src/hadoop-2.7.3/dfs/name</value>
    		<description>保存FsImage镜像的目录,作用是存放hadoop的名称节点namenode里的metadata</description>
    	</property>
    	<property>
    		<name>dfs.datanode.data.dir</name>
    		<value>file:/usr/local/src/hadoop-2.7.3/dfs/data</value>
    		<description>存放HDFS文件系统数据文件的目录,作用是存放hadoop的数据节点datanode里的多个数据块</description>
    	</property>
    	<property>
    		<name>dfs.replication</name>
    		<value>2</value>
    		<description>block块副本数,默认值3</description>
    	</property>
    </configuration>
    

    mapred-site.xml文件如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <!--关注微信公众号:阿布的进击-->
    <!--文件:mapred-site.xml -->
    <!--参考地址 http://hadoop.apache.org/docs/r2.7.3/-->
    <configuration>
    	<property>
    		<name>mapreduce.framework.name</name>
    		<value>yarn</value>
    		<description>指定运行mapreduce的环境是yarn</description>
    	</property>
    	<!--hadoop历史服务器-->
    	<property>
    		<name>mapreduce.jobhistory.address</name>
    		<value>master:10020</value>
    		<description>MR JobHistory服务器进程间通信地址</description>
    	</property>
    	<property>
    		<name>mapreduce.jobhistory.webapp.address</name>
    		<value>master:19888</value>
    		<description>MR JobHistory服务器的用户界面地址</description>
    	</property>
    	<property>
    		<name>mapreduce.jobhistory.done-dir</name>
    		<value>/mr-history/done</value>
    		<description>已执行完毕作业信息存储位置</description>
    	</property>
    	<property>
    		<name>mapreduce.jobhistory.intermediate-done-dir</name>
    		<value>/mr-history/tmp</value>
    		<description>正在运行的作业信息存储位置</description>
    	</property>
    	<property>
    		<name>yarn.app.mapreduce.am.staging-dir</name>
    		<value>/mr-history/hadoop-yarn/</value>
    		<description>MR作业在提交时所使用的临时目录, 是一个本地路径</description>
    	</property>
    	<property>
    		<name>mapreduce.map.memory.mb</name>
    		<value>2048</value>
    		<description>调度器为每个map task申请的内存数,各Job也可以单独指定,如果实际使用的资源量超过该值,则会被强制杀死</description>
    	</property>
    	<property>
    		<name>mapreduce.reduce.memory.mb</name>
    		<value>2048</value>
    		<description>调度器为每个reduce task申请的内存数,同map task,超出强制杀死</description>
    	</property>
    	<property>
    		<name>mapreduce.job.reduce.slowstart.completedmaps</name>
    		<value>0.8</value>
    		<description>当map task完成80%时,为reduce申请资源,reduce开始进行拷贝map结果数据和做reduce shuffle操作,默认0.05</description>
    	</property>
    </configuration>
    

    slaves文件如下:

    slave1
    slave2
    

    yarn-site.xml文件如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <!--关注微信公众号:阿布的进击-->
    <!--文件:yarn-site.xml -->
    <!--参考地址 http://hadoop.apache.org/docs/r2.7.3/-->
    <configuration>
    	<!--日志聚合相关-->
    	<property>
    		<name>yarn.log-aggregation-enable</name>
    		<value>true</value>
    		<description>开启日志聚合功能,开启后日志保存在hdfs上</description>
    	</property>
    	<property>
    		<name>yarn.log-aggregation.retain-seconds</name>
    		<value>86400</value>
    		<description>聚合后的日志在hdfs上的保存时间,单位为秒</description>
    	</property>
    	<property>
    		<name>yarn.log.server.url</name>
    		<value>http://master:19888/jobhistory/logs</value>
    		<description>日志聚合服务器URL</description>
    	</property>
    	<property>
    		<name>yarn.nodemanager.aux-services</name>
    		<value>mapreduce_shuffle</value>
    		<description>NodeManager上运行的附属服务,需配置成mapreduce_shuffle,才可运行MapReduce程序</description>
    	</property>
    	<property>
    		<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
    		<value>org.apache.hadoop.mapred.ShuffleHandler</value>
    	</property>
    	<property>
    		<name>yarn.resourcemanager.address</name>
    		<value>master:8032</value>
    		<description>RM 对客户端暴露的地址。客户端通过该地址向RM提交应用程序,杀死应用程序</description>
    	</property>
    	<property>
    		<name>yarn.resourcemanager.scheduler.address</name>
    		<value>master:8030</value>
    		<description>RM 对ApplicationMaster暴露的访问地址。AM通过该地址向RM申请资源、释放资源</description>
    	</property>
    	<property>
    		<name>yarn.resourcemanager.resource-tracker.address</name>
    		<value>master:8035</value>
    		<description>RM 对NodeManager暴露的地址,NM通过该地址向RM汇报心跳,领取任务</description>
    	</property>
    	<property>
    		<name>yarn.resourcemanager.admin.address</name>
    		<value>master:8033</value>
    		<description>RM 对管理员暴露的访问地址。管理员通过该地址向RM发送管理命令等</description>
    	</property>
    	<property>
    		<name>yarn.resourcemanager.webapp.address</name>
    		<value>master:8088</value>
    		<description>RM对外web ui地址。用户可通过该地址在浏览器中查看集群各类信息</description>
    	</property>
    	<!-- 关闭虚拟内存检查-->
    	<property>
    		<name>yarn.nodemanager.pmem-check-enabled</name>
    		<value>false</value>
    		<description>是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认为true</description>
    	</property>
    	<property>
    		<name>yarn.nodemanager.vmem-check-enabled</name>
    		<value>false</value>
    		<description>是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true</description>
    	</property>
    </configuration>
    
    • 进入到/usr/local/src/hadoop-2.7.3/目录下创建对应目录
    mkdir -p dfs/data
    mkdir -p dfs/name
    mkdir tmp
    
    • 配置/root/.bashrc全局环境变量,如下:
      进入vi /root/.bashrc,进行添加如下内容:
    # set hadoop environment
    export HADOOP_HOME=/usr/local/src/hadoop-2.7.3
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    

    添加之后esc退出保存,并重新加载环境变量
    source /root/.bashrc

    搭建hadoop集群条件

    需要准备三台centos7系统;每个系统节点,都需要关闭防火墙(iptables,selinux)、jdk、互信、ip映射

    VM克隆slave两台

    • 克隆完两台slave之后,修改对应IP地址,并重新启动网络
    /etc/init.d/network restart
    
    • 配置三台对应hostname,操作命令如下:
    hostnamectl set-hostname master
    
    • 配置主机文件(每一个节点都需要执行)
      vi /etc/hosts
      192.168.127.130 master
      192.168.127.131 slave1
      192.168.127.132 slave2
      修改为一台机器的hosts文件之后,也可以通过scp进行分发hosts文件,操作命令如下:
    scp -r /etc/hosts root@slave1:/etc/
    

    提示输入yes/no,输入yes;
    提示输入slave1的密码,输入slave1密码,就会自动分发到对应节点,依次类推发到slave2节点

    • SSH互信配置
      ssh-keygen -t rsa

    三次回车生成密钥(每一个节点都需要执行)

    生成公钥(主节点执行)

    cat /root/.ssh/id_rsa.pub > /root/.ssh/authorized_keys
    chmod 600 /root/.ssh/authorized_keys

    复制其他节点的公钥(主节点执行)

    ssh slave1 cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
    ssh slave2 cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys# 复制公钥到其他节点(主节点执行)
    scp /root/.ssh/authorized_keys root@slave1:/root/.ssh/authorized_keys
    scp /root/.ssh/authorized_keys root@slave2:/root/.ssh/authorized_keys

    免密SSH测试

    ssh slave1 ip addr
    ssh slave2 ip addr

    • 格式化hadoop集群
    hadoop namenode -format
    

    在那节点格式化,对应节点就是主节点

    • 启动hadoop集群
    [root@master hadoop-2.7.3]# sbin/start-all.sh
    
    • 检查hadoop集群是否正常
      • 检查进程是否正常 jps
         [root@master hadoop-2.7.3]# jps
         1777 ResourceManager
         2034 Jps
         1483 NameNode
    
  • 相关阅读:
    nodejs 实现简单的文件上传功能
    url地址数据转换成json数据格式
    html布局,左侧固定右侧自适应
    JavaScript事件
    如何用CSS进行网页布局
    选项卡教程(源代码)
    css切图教程
    前端学习的大概路线
    AJAX之学习笔记(持续更新......)
    nginx命令详解
  • 原文地址:https://www.cnblogs.com/sjkzy/p/14981744.html
Copyright © 2020-2023  润新知