hadoop虚拟机centOS安装过程(伪分布式)

伪分布式模式安装

 

     学习hadoop有一段时间,中间忙了很久没看过,虚拟机的hadoop也被删除了,之前装的是hadoop集群环境,        都是使用虚拟机,因为集群环境多配置,暂先将配置伪集群方式搭建起来使用,其使用的原理都是一样的,后面      有时间再把真实集群搭建一次,下面是我搭建的步骤:

      我是win7 64位系统,但因centOS 64位尚未下载,先装32位的

先说下准备的软件(32位):

1.虚拟机 : wmWare10

2.Linux系统 : CentOS-6.4-i386-bin-DVD

3.JDK : jdk-7u45-linux-i586.rpm

4.远程连接:secureCRT,因每次到虚拟机操作有点麻烦而且速度慢

 

上面的1,2软件安装就不说了,很简单直接安装即可,系统安装完成后设置网络连接,让其接通的即可.

 

3. 安装JDK,网上文档很多,简单提下,推荐使用1.6版本, 因为hadoop是在1.6下经过测试通过的,

3.1  先验证源系统是否存在自带jdk : 

# rpm -qa|grep gcj

之前是否已安装过jdk,最好卸载后重装,保证jdk完整

#rpm -qa|grep jdk

 

上述命令若有返回值则使用rpm -e --nodeps 命令删除上面查找的内容;

 

3.2  整理清楚jdk后使用

       rpm -ivh jdk-6u24-linux-i586.rpm 命令即可,

       若是jdk-6u24-linux-i586.bin文件,直接前面加点(./文件名)执行,如无权限再赋予即可,

如果没有报错说明安装成功,默认的安装路径是在/usr/java路径下;以后配置会用到这个路径,将其目录名修改为 jdk6, 接下来就是和windows一样要配置环境变量:

编辑文件# /etc/profile,在空白的地方加入以下内容:

export JAVA_HOME=/usr/java/jdk6

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

export PATH=$PATH:$JAVA_HOME/bin

3.3  然后命令 #source /etc/profile 使其生效;最后使用java -version验证是否安装配置成功;

 

 4. 关闭防火墙,此操作不是必须的,只是为了减少学习过程中避免无谓的错误,而选择关闭防火墙,防火墙的目的是关闭尽可能不用的端口,避免恶意攻击,保证安全性,在实际工作中也不可能把防火墙关闭.

使用命令 # service iptables status 查看防火墙状态,

使用命令 # service iptables stop 关闭防火墙;

 

5.修改主机名设置DNS解析

     5.1 修改主机名称, 命令 #vi /etc/sysconfig/network       =>       HOSTNAME=hadoop

          显示效果可以重启系统, 看最左边盘符

    5.2 hadoop集群之前通过主机名来互相访问,需设置域名解析,与window是文件名一样,

编辑文件 # vi /etc/hosts ,在最后新增一行,例如192.168.0.201 hadoop;

 

6.设置SSH免密码登录,如果需要远程管理其他机器,传统只能使用命令telnet访问,但其通信不加密致使不安全,只能在内网直接访问,解决这个问题退出了ssh加密通信协议 SSH(Secure Shell), 使用非对称加密方式,传输内容使用rsa或的dsa加密,因每次ssh通信需要登录,所以需配置免密码登录:

6.1 先到主目录下,命令 # cd ~,可以看到.ssh隐藏文件夹,其是用来存放密钥的;

6.2 命令 # ssh-keygen -t rsa , 前一横杠是没有空格的 ,回车后还会有3次的输入信息,直接再回车就ok;

6.3 命令进入 # cd .ssh , (.ssh的权限是700)看到有2个文件, 命令拷贝 # cp id_rsa.pub authorized_keys 生成授权文件, 3个文件的权限是除了自己有写权限外,其他都是没有的;

6.4 验证ssh登录, 命令 # ssh localhost ,确认后会改变当前用户,多次更换是不需要确认,若需要是配置出错;

 

华丽分割线---------------------------------到此已经成功一半了,下面来安装hadoop系统:

 

1. 将下载好的hadoop1.2.1.tar.gz放到/urs/local下,

     命令解压包到当前 # tar -zxvf hadoop1.2.1.tar.gz , 因为以后配置会用到这个路径,将其目录名修改为hadoop,

2. 配置hadoop环境变量 , 在/etc/profile下新增一行:

    HADOOP_HOME=/usr/local/hadoop

    下面增加 export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME

    记得修改profile文件都需要重新加载 # source /etc/profile

3. 修改hadoop的内部配置文件:

    1. hdfs-env.sh

        一般情况下是,修改文件第9行的JAVA_HOME路径;

        export JAVA_HOME=/usr/local/jdk6/

    2. core-site.xml:配置hdfs

<configuration>

    <property>

        <name>fs.default.name</name>

        <value>hdfs://hadoop:9000</value>

        <description>hdfs</description>

    </property>

    <property>

        <name>hadoop.tmp.dir</name>

        <value>/usr/local/hadoop/tmp</value>

         <description>hdfs</description>

    </property>  

</configuration>

    3. hdfs-site.xml:配置hdfs分布数量

<configuration>

    <property>

        <name>dfs.replication</name>

        <value>1</value>

        <description>MapReduce</description>

    </property>

    <property>

        <name>dfs.permissions</name>

        <value>false</value>

        <description>MapReduce</description>

    </property>

</configuration>

    4. mapred-site.xml:配置MapReduce

 <configuration>

    <property>

        <name>mapred.job.tracker</name>

        <value>hadoop:9001</value>

        <description>MapReduce</description>

    </property>

</configuration>

       

 4. 格式化hadoop文件: 只需要一次即可

     命令 $HADOOP_HOME/bin/hadoop namenode -format, 看到输出信息中有successfully format即表示成功, 不成功会有错误信息,根据信息修改后继续执行上命令, 执行成功后,不可多次格式化操作,会引起未知错误,若执行多次,可将hadoop下的tmp目录删除后,重新格式化

5. 启动/关闭hadoop:

     到了这里,至少可以恭喜你配置完成,只是完成,还没完整成功,只差最后一步启动了

     hadoop启动提供了多种方式:可以在bin目录下查看命令

     1. 最省事:

         start-all.sh(stop-all.sh) :

             一看就知道是启动全部,一共会有5个java进程启动,NameNode, DataNode,SecondaryNameNode,

             JobTracker, TaskTracker

     2. 分类启动:

          start-dfs.sh(stop-dfs.sh):

                hdfs的启动,只会启动NameNode, DataNode,SecondaryNameNode3个进程

           start-mapred.sh(stop-mapred.sh):

                 MapReduce的启动,只会启动 JobTracker, TaskTracker 2个进程

      3.  单独启动:分别启动5个进程,适用于单独增加/删除节点情景

           hadoop-daemon.sh start namenode

           hadoop-daemon.sh start datanode

           hadoop-daemon.sh start secondarynamenode

               hadoop-daemon.sh start jobtracker

               hadoop-daemon.sh start tasktracker

6. 查看hadoop运行情况:

     6.1 使用命令jps查看当前hadoop正在运行的java进程, 对应启动命令查看进程便可以知道是否启动成功 , 一般全量启动一共有5个进程 , 即上述的5个 , 缺少对应的进程说明启动失败, 可以到hadoop下的logs目录查看最新启动的日志

      6.2 浏览器查看: 与访问web项目一样, 下列是默认的端口,若有冲突可以修改

            http://hadoop:50070   查看NameNode的管理信息 , 包括DataNodes的信息

            http://hadoop:50030   查看JobTracker的管理信息, 包括TaskTrackers的信息

7. 运行一个系统自带统计单词数量的DEMO:

     7.1  先上传一个文件, 最好是文件大一点的, 命令 hadoop fs -put <fs-dir> , 

     7.2  在fs上创建一个文件夹来放置结果 , 命令 hadoop fs -mkdir result

     7.3  在$HADOOP_HOME下有一个jar包: hadoop-examples-1.2.1.jar , 这是一个已经写好的MapReduce程序, 运行命令 hadoop jar hadoop-examples-1.2.1.jar wordcount <in> <out> , 输入文件绝对路径和输出文件目录, 回车后有一些执行过程信息;

       7.4 完成后在上面指定的输出目录查看结果:

             命令 hadoop fs -text /result/part-r-00000 查看 , 输出目录下包含了运行的日志 , 结果等 ,具体自己一个个查看;

       至此, hadoop的伪分布式环境搭建成功 , 后续要继续了解hdfs的命令和自己去熟悉MapReduce的java API , 用其来进行大数据量的计算工作 , 其效率是杠杠的(大文件).    

猜你喜欢

转载自elvishuang.iteye.com/blog/2025466