Hadoop第二天---伪分布式环境搭建

    1.准备好Linux镜像,VMware或者VisualBox,然后在虚拟机上面安装Linux系统,保存好用户名和密码。

    2.配置虚拟机过程中,可以把内存设置为1GB,硬盘8GB,网络设置为NAT,开启共享等等。

    3.安装Linux镜像。

    4.解决Linux下中文输入的问题。具体步骤如下:

      (1) 切换到Root用户,或者使用Terminal 键入命令 su 输入root密码。

      (2) 键入yum install "@Chinese Support"。

      (3) 等待完成之后键入exit退出Terminal。

      (4) 回到桌面,进入System->preferences->input method(如果没有,先注销一下)。

      (5) 进入,选择上面的USB IBUS(recommended),点击Input Method Preferences按钮,弹出 IBUS Preferences对话框,选择Input Method选项卡,在下拉菜单里面选择Chinese,并点击Add按钮即可。

      (6) 可以在General选项卡中设置启动栏的提示,切换快捷键等等。

      (7) 再次注销后,就可以使用输入法了。

    5.按照步骤,首先为用户配置root权限。具体方法如下:

    方法一:

      (1) 用Root登陆,或者使用Terminal 键入命令 su 输入root密码。

      (2) 用vi命令打开/etc/sudoers文件,然后找到如下一行:   

        ##Allows people in group wheel to run all commands
        # %wheel    ALL=(ALL)    ALL

      将上述代码修改为:

        ##Allows people in group wheel to run all commands
        %wheel    ALL=(ALL)    ALL

      (3) 修改用户,使其输入root组(wheel)即可。命令如下:

        [root@localhost ~] # usermod -g root xxxx(用户名) 

    方法二:

      (1) 用Root登陆,或者使用Terminal 键入命令 su 输入root密码。

      (2) 用vi命令打开/etc/sudoers文件,然后找到如下一行:

        ##Allows root to run any commands anywhere
        root    ALL=(ALL)    ALL

      将上述代码修改为:

        ##Allows people in group wheel to run all commands
        root    ALL=(ALL)    ALL
        xxx(用户名)   ALL=(ALL)    ALL

    6.修改机器名(在修改用户root权限的前提下)。命令如下:

      (1) 使用Terminal 键入命令 su 输入root密码。

      (2) 在Terminal 下键入 vi /etc/sysconfig/network,进入VI修改模式,显示为:

        NETWORKING=yes
        HOSTNAME=localhost.localdomain

        修改为:

        NETWORKING=yes
        NETWORKING_IPV6=no
        HOSTNAME=XXX(主机名)

      (3) 重新启动生效,在Terminal下能看到主机名已经改掉。

    7.开启SSH服务,步骤如下:

      (1) 打开Terminal,键入命令 su ,输入root密码。

      (2) 首先检查是否已经安装了openssh-server,命令如下:

        rpm -qa |grep ssh

        若没有安装,则键入命令,等待完成:

        yum install openssh-server

      (3) 安装完成后会在/etc/init.d目录下增加一个名为sshd的服务,可以设置sshd服务开机自动启动,命令如下:

        chkconfig sshd on

        也可以使用 chkconfig sshd off 来关闭自动启动服务。

        另外,可以使用chkconfig --add sshd 来添加服务,使用 chkconfig --list 来列出所有自启动服务,使用 chkconfig --list sshd 来查看某一个服务是否自启动(0~6均为off代表不会自启动)。

      (4) 键入 chkconfig --list sshd 检查SSHD是否在本运行级别下设置为开机启动,如果没有设置为自动启动,则键入 chkconfig --level 2345 sshd on 设置自动启动。然后键入 service sshd restart 重启服务,键入 netstat -antp |grep sshd 确认22端口是否已经启动,键入 iptables -nL 看看是否放行了22端口,如果没有,则在防火墙设置中设置SSH服务放行。

      (5) 配置SSH免密码模式:

        进入root路径下,运行 ssh-keygen -t rsa 命令,生成SSH密匙对(公钥和私钥,RSA算法)。

        系统会询问你要存放在什么地址下,回车默认地址。

        如果地址已经存在,则会提示你是否Overwrite。

        如果地址不存在,系统会提示你输入私钥的密语,输入并回车即可(输入过程是看不见提示的)。

        输入 cd .ssh 以及 ls 命令,可以查看.ssh路径下生成的私钥,其中有 id_rsa(私钥) 和 id_rsa.pub(公钥) 两个文件。输入 cp id_rsa.pub authorized_keys 来复制出一份公钥,并以authorized_keys命名,以便以后调用。

    8.下载安装JDK 1.6(链接:http://pan.baidu.com/s/1hqvfGBq),使用Terminal 来解压安装 JDK,命令如下:

        /home/hadoop/Desktop/Hadoop/jdk-6u24-linux-i586.bin

      安装完成后,执行编辑profile文件,代码如下:

        vi /etc/profile

      在umas k022前,添加一下语句,配置环境变量: 

        export JAVA_HOME=/home/hadoop/jdk1.6.0_24(具体安装路径和JDK版本可能都不同)

        export JAVA_BIN=/home/hadoop/jdk1.6.0_24/bin

        export PATH=$PATH:$JAVA_HOME/bin

        export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

        export JAVA_HOME JAVA_BIN PATH CLASSPATH

      最后使用 . /etc/profile将修改的文件立即生效(注意.与路径之间有空格)。

      可以键入 java -version 命令来判断环境配置是否正确,若成功出现版本号等信息,表明JDK环境配置成功。

    9.Hadoop的安装:

      (1) 下载Hadoop,推荐Hadoop-0.20.2.tar.gz,因为很多书上都是这个版本,也可以到Apache官网上下载最新的版本。

        链接:http://pan.baidu.com/s/1i3uxGt3

      (2) 解压Hadoop安装包,命令为:  

        tar xzvf /root/hadoop-0.20.2(需要Root权限)

        再把Hadoop的安装路径添加到/etc/profile中:

        vi /etc/profile
        export HADOOP_HOME=/root/hadoop-0.20.2
        export PATH=$HADOOP_HOME/bin:$PATH

       (3) 修改Hadoop配置文件:

          1.hadoop_env.sh配置文件(conf目录下,各个版本都有不同):

            # The java implementation to use.   Required.
            # export JAVA_HOME=....(将#打开,并修改JAVA_HOME环境变量的路径)

          2.core-site.xml配置文件(conf目录下):        

            <configuration>
              <property>
                <name>fs.default.name</name>(指定NameNode的IP地址和端口)
                <value>hdfs://localhost:9000</value>(若是完全分布式的模式,则要将此处改为真实NameNode的IP)
              </property>
            </configuration>

          3.hdfs-site.xml配置文件(conf目录下):

            <configuration>
                  <property>
                        <name>dfs.data.dir</name>(指出DataNode存放数据的路径)
                        <value>/root/hadoop-0.20.2/data</value>
                  </property>
                  <property>
                        <name>dfs.replication</name>(数据块复制的份数,副本数)
                        <value>1</value>(伪分布式只有一个节点,所以是1)
                  </property>
            </configuration>

          4.mapred-site.xml配置文件(conf目录下):        

            <configuration>
              <property>
                <name>mapred.job.tracker</name>(配置作业机的地址)
                <value>localhost:9001</value>(若是完全分布式,则此处应该为真实的Tracker的IP)               </property>             <configuration>

     10.进入Hadoop目录下,格式化NameNode,然后启动Hadoop服务,可以用jps命令来查看各个Hadoop服务是否启动。

     

     

    再次开机启动hadoop时,就不需要格式化NameNode了,如果发现有一些进程没有启动,则可以进入http://localhost:50070,进入NameNode log下,查看相应进程的日志,可以看到熟悉的JAVA异常,不同情况有不同的解决方法,具体可以百度。

    我遇到的情况是UnknownHostException,发现是/etc/hosts内没有添加用户名对应的IP地址,导致找不到Host。

    解决方案是在/etc/hosts文件中添加相应的主机名。

    如果出现NameNode 的namespaceID 与DataNode 的namespaceID 不同而导致的IOException,具体如下:

    

java.io.IOException: Incompatible namespaceIDs in /home/iic/hadoop-0.20.2/hdfs-data: namenode namespaceID = 1444851414; datanode namespaceID = 620054427

    解决方案是将对应文件的namespaceID修改成一样的就可以了。

      成功启动后的效果如图:

     

 

附:完全分布式环境搭建过程:

    1.配置hosts文件,对集群里面的主机名进行解析,使彼此都能将主机名解析成为IP地址。在所有节点中都将/etc/hosts文件修改,使彼此之间都能把主机名解析为IP。如果集群规模比较大,也可以用DNS服务器来专门解析主机名。

       

    2.建立hadoop运行账号,不能使用root账号,否则可能会有安全隐患。

    

    3.配置SSH免密码连入,注意:要用上一步新建的账号登陆,并进入主目录下(/home/用户名),每个节点做相同的操作。

    

    将各个节点的authorized_keys的内容互相拷贝,加入到对方的authorized_keys文件中,这样就可以免去密码连接了。

    

    4.下载并解压hadoop安装包。

    

    5.配置NameNode,修改site文件(同伪分布式,注意:修改localhost,变为主机名,以及副本数)。

    6.配置hadoop-env.sh(同伪分布式)。

    7.配置masters和slaves文件。

    

    

    8.向各节点复制hadoop,如果SSH免密码配置未完成,则scp命令会询问用户名和密码,注意:先配置好再复制

    

    9.格式化NameNode(同伪分布式),要保证先进入hadoop-0.20.2目录下。

    

    10.启动hadoop。

    

    11.用jps检验各后台进程是否成功启动(jps指的是观看与JAVA有关的进程的信息),总共5个进程。

    主服务器:

    

    从服务器:

    

 

posted @ 2015-01-03 19:39  Bestsonic  阅读(633)  评论(0编辑  收藏  举报