zoukankan      html  css  js  c++  java
  • hadoop伪分布式环境搭建

    前言:

      由于博主之前没有从事过hadoop相关的开发工作,最近正好遇到一个hadoop相关的项目,于是决定自学研究一下,博主整理的东西绝对是最全最详细的,不要问为什么,

    因为博主为了搭建hadoop环境几乎以及把网上所有的教程都看了一遍,很多文章都是缺东少西的,博主几乎是尝遍了所有的方法,最后终结出一篇可行的方案分享给大家,所需的软件都可以在官网下载,找不到的可以私聊我,我会在第一时间把所有的软件包给你。编写不易,转载请注明出处。

     
    Hadoop伪分布式搭建说明
    • 如图片与文字不符合,以文字为准。
    • IP地址自行替换本机IP地址。
    1. 软件准备

    操作系统文件:CentOS-6.8-x86_64-bin-DVD1.iso
    虚拟机文件:VMware_player_7.0.0_2305329.1420626349
    JAVA文件(RPM包):jdk-8u101-linux-x64.rpm
    Hadoop文件:hadoop-2.7.3.tar.gz
    hadoop-eclipse:hadoop-eclipse-plugin-2.7.3.jar
    远程端控制软件:Putty_V0.63.0.0.43510830;Bitvise SSH Client 4.5
    1. VMware_player_7.0.0虚拟机安装步骤

    1.进入VMware Player安装向导
    2.选择:我接受许可协议中的条款
    3.更改安装路径,建议不要放在C盘下。
    4.取消打勾选项:启动时检查产品更新。
    5.取消打勾选项:帮助改善 VMware Player(H)。
    6.打勾选项:桌面与开始菜单程序文件夹。
    7.选择:继续。
    8.等待几分钟安装程序
    9.选择:完成。完成安装VMware Player。
    1. 安装CentOS-6.8-x86_64虚拟机

    1.进入VMware Player 7选择:免费将VMware Player 7用于非商业用途。并填写邮箱。
    2.选择完成。
    3.选择:创建新虚拟机(N),进入新建虚拟机向导。
    4.选择:稍后安装操作系统(S)。
    5.客户机操作系统中选择Linux(L),版本(V)选择CentOS 64位。
    6.修改:虚拟机名称(V):Hadoop集群(伪分布)。位置自定义,建议不要放在C盘。
    7.由于是虚拟的测试环境。故最大磁盘大小(GB)(S)选择默认值:20G。
      存储文件方式:选择将虚拟磁盘存储为单个文件(O)。
    8.选择:自定义硬件。
    9.选择硬件选项卡的CD/DVD(IDE),连接选项,点击使用ISO映像文件(M):将CentOS-6.8-x86_64-bin-DVD1.iso添加。最后点击:确定。
    10.点击播放虚拟机(L)。打开新建完成的虚拟机。
    11.系统会自动加载ISO文件。出现CentOS-6.8-x86_64的安装界面准备环境。
    选择:lnstall or upgrade an existing system。进入正式的操作系统安装。
    12.载入安装的图形化界面。
    13.跳过检测光盘介质。因为下载的是一个完整的ISO文件。所以不需要检测。
    14.正式进入CentOS-6.8-x86_64安装界面。
    15.选择安装过程的语言:English(English)。(中文安装可能会有不必要的乱码)
    16.选择系统键盘输入语言:U.S.English。(中文输入可能产生不必要的乱码)
    17.选择一种存储设备进行安装。选择:Basic Storage Devices。
    Basic Storage Devices(基本存储设备):用于台式机和笔记本等等。
    18.这里系统会检测是否有分区,一开始创建的硬盘没有分区。直接选择Yes,discard any data(清除所有数据)。
    19.填写Hostname:hadoop。
    并点击Configure Network,配置网络。
    20.选中System eth0,点击Edit网卡。
    21.将Connect automatically选项打勾。
    IPv4 Settings中Method选择:Automatic(DHCP)。
    选择Apply,确认修改。
    这样开始,系统开始时,会自动连接网卡,并且由DHCP自动分配IP地址。
    【注:不同的环境不同的实施方案,这里仅仅讨论此连接方式】
    22.选择:Close,关闭。
    22.选择:Asia/Shanghai时区
    将System clock uses UTC打勾项目取消。
    23.设置root密码,这里设置为:hadoop。
    24.由于hadoop是一个弱口令(在字典中可以找到)。所以系统提示是否使用弱口令。
    测试环境无关紧要。生产环境建议使用强口令。
    25.虽说是测试环境,但这里参考实际工作,按照实际的要求对硬盘进行分区,合理利用硬盘。
       故这里选择:Create Custom Layout,对硬盘进行重新分区。
    26.创建/boot,选择1024MB,防止系统扩容。
    创建swap,大小是建议是内存的2倍,故为2048MB。
    剩下的空间创建/,将剩余空间全部分配/。
    【注:此方法是最简单的自定义分区方式。这里就不一一叙述其他分区方式】
    27.选择Format,将分区表格式化。
    28.选择Write changes to disk,将分区写入磁盘。
    29.此为GRUB引导安装窗口,可采用默认设置,选择next进行下一步安装。
    30.选择:Basic Server。
    由于hadoop的集群安装不需要桌面。而最小化不适合新手。故选择Basic Server最好。
    31.等待安装。
    32.安装完成后,选择Reboot进行重启。
     
    33.安装完成后,输入hadoop login:root;password:hadoop。成功进入操作系统。
     
     
    3.Hadoop集群搭建(伪分布式)
     
    • 使用Putty登录Centos
    1.通过VMware Player登录到系统,使用ifconfig命令查看eth0的IPv4地址:192.168.64.128.
    2.使用root帐户,创建hadoop用户,并将该帐户的密码设置为hadoop。
    【注:创建hadoop用户是为了更好对服务的管理分配,不建议把应用使用root用户搭建】
    3.配置putty界面:Host Name(or IP address):192.168.64.128
                    Port:22
                    Connection type:SSH
    4.同意接受服务器密钥的验证。
    5.将在VMware Player中创建的hadoop用户及密码通过Putty工具登录系统。
    6.使用su root命令进入root用户,这样我们就有了对该系统最大的操作权限。
    • 关闭防火墙与SELINUX
    1.关闭防火墙服务。
    [root@hadoop]#service iptables stop
    2.开机自动关闭防火墙
    [root@hadoop]#chkconfig iptables off
    3.将SELINUX关闭
    编辑vi /etc/selinux/config;修改SELINUX=disabled(默认值SELINUX=enforcing),并输入:wq,保存配置文件。
    [root@hadoop]#vi /etc/selinux/config
    SELINUX=disabled
    • 设置主机的hosts
    [root@hadoop]#vi /etc/hosts
    192.168.64.128 hadoop
    • 使用Bitvise SSH Client 4.5,将JAVA文件与Hadoop文件上传到Hadoop用户主目录下。
    1.填写Host:192.168.64.128
          Port:22
          Username:hadoop
          Password:hadoop
    2.同意接受服务器密钥的验证。
    3.选择New SFTP window。
    4.将左边的本地文件上传到右边的Centos的hadoop主目录下。
    5.正在上传。
    6.上传完成后,在hadoop用户下输入ll,查看文件的完整性。
    • 进行SSH无密码验证配置
    1.由于安装的是基本包,所以:ssh和rsync已经安装了。
    [hadoop@hadoop ~]rpm –qa | grep openssh
    [hadoop@hadoop ~]rpm –qa | grep rsync
    2.输入ssh-keygen –t rsa –P ''生成无密码密码对。
    [hadoop@hadoop ~]ssh-keygen –t rsa –P ''
    3.生成的密钥对:id_rsa和id_rsa.pub,默认存储在/home/hadoop/.ssh目录下。
    4.使用cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys,把id_rsa.pub追加到授权的key里面去。
    [hadoop@hadoop ~]cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    • 验证前需要做两件事。
    1.chmod 600 ~/.ssh/authorized_keys 修改文件authorized_keys权限
    [hadoop@hadoop ~]chmod 600 ~/.ssh/authorized_keys
    2.用root用户设置/etc/ssh/sshd_config的内容。使其无密码登录有效。用root用户登录服务器修改SSH配置文件/etc/ssh/sshd_config的下列内容。
    [root@hadoop ~]vi /etc/ssh/sshd_config
    RSAAuthentication yes
    PubkeyAuthentication yes
    AuthorizedKeysFile .ssh/authorized_keys
    3.输入:serveice sshd restart,重启ssh服务。
    [root@hadoop ~]serveice sshd restart
    4.输入:ssh localhost,验证是否可以不用输入密码登录系统。
    [root@hadoop ~]ssh localhost
    • Java安装
    登录root用户,输入:yum remove java命令,先将系统自带的低版本JAVA删除。
    [root@hadoop ~]yum remove java
    2.输入:rpm -ivh jdk-8u101-linux-x64.rpm,安装java 8u101版本。
    [root@hadoop ~]rpm -ivh jdk-8u101-linux-x64.rpm
    1. 配置JAVA的环境变量
    [hadoop@hadoop ~]vi /etc/profile
     
    # set java environment
    export JAVA_HOME=/usr/java/jdk1.8.0_101/
    export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
    export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
     
    4.执行:source /etc/profile 使配置生效。
    [hadoop@hadoop ~]source /etc/profile
    使用java –version 查看java版本号:1.8.0_101。
    输入:echo $JAVA_HOME出现JAVA路径。
    [hadoop@hadoop ~]java –version
    [hadoop@hadoop ~]echo $JAVA_HOME
    说明配置成功。
    • hadoop安装
    1.解压hadoop-2.7.3.tar.gz文件
    [hadoop@hadoop ~]tar -zxvf hadoop-2.7.3.tar.gz
    使用ll命令查看文件是否解压成功。
    [hadoop@hadoop ~]ll
    2.修改hadoop文件夹的位置与权限。
    登录root用户。
    [hadoop@hadoop ~]mv hadoop-2.7.3 hadoop
    [hadoop@hadoop ~]mv hadoop /usr/local
    [hadoop@hadoop ~]cd /usr/local
    [hadoop@hadoop ~]chown –R hadoop:hadoop hadoop

    mv hadoop-2.7.3 hadoop                 #将"hadoop-2.7.3"文件夹重命名"hadoop"
    mv hadoop /usr/local                   #将hadoop文件夹移动到/usr/local
    cd /usr/local                          #进入"/usr/local"目录
    chown –R hadoop:hadoop hadoop          #将文件夹"hadoop"读权限分配给hadoop用户
    退出root用户
    进入hadoop的配置文件:
    [hadoop@hadoop ~]cd /usr/local/hadoop/etc/hadoop
    3.配置环境变量
    [hadoop@hadoop ~]#vi ~/.bashrc
     
    # set hadoop environment
    export HADOOP_HOME=/usr/local/hadoop
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
     
    [hadoop@hadoop]#source ~/.bashrc
    4.Hadoop配置主要有7个文件:
    core-site.xml
    hadoop-env.sh
    hdfs-site.xml
    mapred-site.xml.template
    slaves
    yarn-env.sh      
    yarn-site.xml
     
    • core-site.xml 文件
    [hadoop@hadoop ~]vi core-site.xml
    <configuration>  
             <property>  
                    <name>fs.defaultFS</name>  
                    <value>hdfs://hadoop:9000</value>  
            </property>  
            <property>  
                    <name>hadoop.tmp.dir</name>  
                    <value>file:/usr/local/hadoop/tmp</value>  
                    <description>Abase for other temporary directories.</description>  
            </property>  
    </configuration>  
    --fs.defaultFS:描述集群中NameNode结点的URI(包括协议、主机名称、端口号)。
    --hadoop.tmp.dir:是hadoop文件系统依赖的基础配置,很多路径都依赖它。
    • hadoop-env.sh
    [hadoop@hadoop ~]vi hadoop-env.sh
    # The java implementation to use.
    export JAVA_HOME=/usr/java/jdk1.8.0_101/
     
    • hdfs-site.xml
    <configuration>  
             <property>  
                    <name>dfs.namenode.secondary.http-address</name>  
                    <value>hadoop:50090</value>  
            </property>  
            <property>  
                    <name>dfs.replication</name>  
                    <value>1</value>  
            </property>  
            <property>  
                    <name>dfs.namenode.name.dir</name>  
                    <value>file:/usr/local/hadoop/tmp/dfs/name</value>  
            </property>  
            <property>  
                    <name>dfs.datanode.data.dir</name>  
                    <value>file:/usr/local/hadoop/tmp/dfs/data</value>  
            </property>  
    </configuration>  
    dfs.namenode.secondary.http-address:定义HDFS对应的HTTP服务器地址和端口。
    dfs.replication:它决定着系统里面的文件块的数据备份个数。对于一个实际的应用,它应该被设为3(这个数字并没有上限,但更多的备份可能并没有作用,而且会占用更多的空间)。少于三个的备份,可能会影响到数据的可靠性(系统故障时,也许会造成数据丢失)。
    dfs.namenode.name.dir:这是NameNode结点存储hadoop文件系统信息的本地系统路径。这个值只对NameNode有效,DataNode并不需要使用到它。上面对于/temp类型的警告,同样也适用于这里。在实际应用中,它最好被覆盖掉。
    dfs.datanode.data.dir:这是DataNode结点被指定要存储数据的本地文件系统路径。DataNode结点上的这个路径没有必要完全相同,因为每台机器的环境很可能是不一样的。但如果每台机器上的这个路径都是统一配置的话,会使工作变得简单一些。默认的情况下,它的值hadoop.tmp.dir,这个路径只能用于测试的目的,因为,它很可能会丢失掉一些数据。所以,这个值最好还是被覆盖。
    • mapred-site.xml.template
    [hadoop@hadoop ~]mv mapred-site.xml.template mapred-site.xml
    [hadoop@hadoop ~]vi mapred-site.xml
    <configuration>  
             <property>  
                    <name>mapreduce.framework.name</name>  
                    <value>yarn</value>  
            </property>  
            <property>  
                    <name>mapreduce.jobhistory.address</name>  
                    <value>hadoop:10020</value>  
            </property>  
            <property>  
                    <name>mapreduce.jobhistory.webapp.address</name>  
                    <value>hadoop:19888</value>  
            </property>  
    </configuration>  
    mapreduce.framework.name 取值local、classic或yarn其中之一,如果不是yarn,则不会使用YARN集群来实现资源的分配。
    mapreduce.jobhistory.address定义历史服务器的地址和端口,通过历史服务器查看已经运行完的Mapreduce作业记录。
    mapreduce.jobhistory.webapp.address定义历史服务器web应用访问的地址和端口。
    • slaves
    [hadoop@hadoop ~]vi slaves
    hadoop
     
    • yarn-env.sh
    [hadoop@hadoop ~]vi yarn-env.sh
    # some Java parameters
    export JAVA_HOME=export JAVA_HOME=/usr/java/jdk1.8.0_101/
     
    • yarn-site.xml
    [hadoop@hadoop ~]vi yarn-site.xml
    <configuration>  
    <!-- Site specific YARN configuration properties -->  
          <property>  
                    <name>yarn.resourcemanager.hostname</name>  
                    <value>hadoop</value>  
            </property>  
            <property>  
                    <name>yarn.nodemanager.aux-services</name>  
                    <value>mapreduce_shuffle</value>  
            </property>  
    </configuration>  
    yarn.resourcemanager.hostname:开启一系列yarn应用端口的主机名。
    yarn.nodemanager.aux-services:NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序。
    5.上述全部配置完成后,进行初始化
    输入命令:hadoop namenode –format进行初始化
    [hadoop@hadoop ~]hadoop namenode –format
    输入:start-all.sh,开启hadoop集群。
    [hadoop@hadoop ~]
    输入:jps,查看正在运行的服务。
    [hadoop@hadoop ~]jps
    6.Windows电脑中Chrome网页输入:http://192.168.64.128:50070查看hadoop(hdfs)的概括。
    输入:http://192.168.64.128:50075查看datanode节点的概括。
    输入:http://192.168.64.128:8088查看MapReduce的运行任务计划。
     
    4.Hadoop的基础操作说明(以文字为准)
     
    ※注:默认已经配置好hadoop并且已正常开启。
    • 运行demo
    1.检查状态
    [hadoop@hadoop ~]jps
    [hadoop@hadoop ~]hdfs dfsadmin -report
    2.执行MapReduce任务
    在HDFS创建一个目录,并把一些文件输入,并列出文件:
     
    [hadoop@hadoop ~]#hdfs dfs -mkdir –p /user/hadoop
    [hadoop@hadoop ~]#hdfs dfs -mkdir –p /user/hadoop/input
    [hadoop@hadoop ~]#hdfs dfs -put /usr/local/hadoop/etc/hadoop/hadoop-env.sh /user/hadoop/input
    [hadoop@hadoop ~]#hdfs dfs -ls /user/hadoop/input
     
    运行WordCount:
     
    [hadoop@hadoop ~]#hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount input output
     
    检查 output文件夹:
    [hadoop@hadoop ~]#hdfs dfs -cat output/*
     
    由于结果太多,不一一列举。
     
    删除output文件夹
     
    [hadoop@hadoop ~]#hdfs dfs -rm -f -r output
     
  • 相关阅读:
    装饰器实例
    生成器、迭代器脚本实例
    魔法方法和属性
    随机生成验证码
    认证客户端的链接合法性
    将socket通信实现多进程
    线程锁模拟抢票系统
    ntp时间服务器
    蛇形串---------
    两年内计划
  • 原文地址:https://www.cnblogs.com/talkingcat/p/13197447.html
Copyright © 2011-2022 走看看