MyException - 我的异常网
当前位置:我的异常网» 软件架构设计 » hadoop 环境筹建1(转)

hadoop 环境筹建1(转)

www.MyException.Cn  网友分享于:2015-08-26  浏览:4次
hadoop 环境搭建1(转)
hadoop-1.1.0 rpm + centos 6.3 64 + JDK7 搭建全分布式集群的方法


第一步 ,环境准备.

服务器3台,可以用3个虚拟机代替.

操作系统.
CentOS 6.3 64

hadoop版本
hadoop 1.1.0 rpm

开始安装
以下所有的操作,都是用 root 身份执行

以下安装,需要在每台机器上面安装.

下载好 jdk-7u9-linux-x64.rpm 和 hadoop-1.1.0-1.x86_64.rpm


1. 首先安装操作系统,并关闭防火墙,




第二步,更改主机名
修改主机名 namenode1,datanode1,datanode2

    vim /etc/sysconfig/network

    (分别修改为)

    HOSTNAME=namenode1

    HOSTNAME=datanode1

    HOSTNAME=datanode2


:wq保存并退出


第三步,修改文件“/etc/hosts


    每台主机中的/etc/hosts文件有以下配置

    vim /etc/hosts

    (添加以下内容)

    192.168.10.137   namenode1
    192.168.10.138   datanode1
    192.168.10.139   datanode2


     测试

    ping namenode1
    ping datanode1
    ping datanode2


第四步.安装jdk,rpm版的会自动配置好环境变量
  

    rpm -ivh jdk-7u9-linux-x64.rpm    

      

      java -version 马上有反应,方便!


第五步.安装hadoop,rpm版的会自动配置部分文件

    rpm -ivh  hadoop-1.1.0-1.x86_64.rpm







(CentOS 6.3默认已经安装了openssh和rsync)


2.2 配置Master无密码登录所有Salve

  1)SSH无密码原理

  Master(NameNode | JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Salve(DataNode | Tasktracker)上时,需要在          Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥追加到所有的Slave的authorized_keys文件上。当Master通过SSH连接Salve时,Salve就会生成一个随机数并从authorized_keys找到Master的公钥,然后用这个公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Slave,Slave确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端Master复制到Slave上。


以下操作,在  namenode1上面执行

1. 创建 ssh 密钥,就是不用密码登陆 目标主机 ,以下命令直接敲默认回车,不用输入任何信息.

    ssh-keygen -t rsa

    cat ~/.ssh/id_rsa.pub  >>~/.ssh/authorized_keys ( 使本机程序可以通过ssh登录本机)


2. 密钥生成完成以后,追加namenode的公钥到其他2台 datanode 上面,使得 namenode能访问其它 datanode

    cat ~/.ssh/id_rsa.pub  |  ssh root@datanode1 "cat >>~/.ssh/authorized_keys"
    cat ~/.ssh/id_rsa.pub  |  ssh root@datanode2 "cat >>~/.ssh/authorized_keys"


3.修改SSH配置文件,启用RSA认证

    vim /etc/ssh/sshd_config


     

     authorized_keys: 存放本机要访问的所有目标主机(s)公钥的文件

     设置完之后记得重启SSH服务,才能使刚才设置有效。



    service sshd restart




3. 验证ssh 不要密码登陆是否成功

    ssh  namenode1

    ssh  datanode1

    ssh  datanode2


如果SSH访问出现问题的话,可以试试下面的

    1)修改文件"authorized_keys"

   

    chmod 644 ~/.ssh/authorized_keys





2.3 配置所有Slave无密码登录Master

    和Master无密码登录所有Slave原理一样,就是把Slave的公钥追加到Master的".ssh"文件夹下的"authorized_keys"中,记得是追加(>>)


用root登录datanode1


1. 创建 ssh 密钥,就是不用密码登陆目标主机,以下命令直接敲默认回车,不用输入任何信息.


    ssh-keygen -t rsa

    cat ~/.ssh/id_rsa.pub  >>~/.ssh/authorized_keys ( 使本机程序可以通过ssh登录本机)


2. 密钥生成完成以后,追加本机的公钥到其他2台机器上面


    cat ~/.ssh/id_rsa.pub  |  ssh root@namenode1 "cat >>~/.ssh/authorized_keys"

    cat ~/.ssh/id_rsa.pub  |  ssh root@datanode2 "cat >>~/.ssh/authorized_keys"




3.修改SSH配置文件,启用RSA认证

    vim /etc/ssh/sshd_config


     

     authorized_keys: 存放本机要访问的所有目标主机(s)公钥的文件

     设置完之后记得重启SSH服务,才能使刚才设置有效。



    service sshd restart




3. 验证ssh 不要密码登陆是否成功


    ssh  namenode1

    ssh  datanode2



如果SSH访问出现问题的话,可以试试下面的

    1)修改文件"authorized_keys"

   

    chmod 644 ~/.ssh/authorized_keys




2.4 配置所有Slave无密码登录Master

    和Master无密码登录所有Slave原理一样,就是把Slave的公钥追加到Master的".ssh"文件夹下的"authorized_keys"中,记得是追加(>>)


用root登录datanode2


1. 创建 ssh 密钥,就是不用密码登陆目标主机,以下命令直接敲默认回车,不用输入任何信息.

    ssh-keygen -t rsa

    cat ~/.ssh/id_rsa.pub  >>~/.ssh/authorized_keys ( 使本机程序可以通过ssh登录本机)



2. 密钥生成完成以后,追加本机的公钥到其他2台机器的authorized_keys上

    cat ~/.ssh/id_rsa.pub  |  ssh root@namenode1 "cat >>~/.ssh/authorized_keys"
    cat ~/.ssh/id_rsa.pub  |  ssh root@datanode1 "cat >>~/.ssh/authorized_keys"



3.修改SSH配置文件,启用RSA认证

    vim /etc/ssh/sshd_config


     

     authorized_keys: 存放本机要访问的所有目标主机(s)公钥的文件

     设置完之后记得重启SSH服务,才能使刚才设置有效。



    service sshd restart



3. 验证ssh 不要密码登陆是否成功

    ssh  namenode1

    ssh  datanode1



如果SSH访问出现问题的话,可以试试下面的

    1)修改文件"authorized_keys"

   

    chmod 644 ~/.ssh/authorized_keys




---------------------------------------------------------------------



2.5 配置Hadoop

每个节点都要进行以下的配置


4. 创建必要的目录.首先创建 namenode 保存namenode 元信息的目录. 设置为 /usr/hadoop/tmp  目录下

    mkdir -p /usr/hadoop/tmp


5. 配置hadoop 运行环境.进入 /etc/hadoop 目录下面,修改hadoop的默认配置.
首先修改 master 文件. master 文件很容易理解错误,master 文件是指 hadoop 机器里面的secondarynamenode.不是指本机(测试用所以配置上,实际上namenode和secondarynamenode放在同一个机子上不能增加可靠性,没什么意义!)


    vim /etc/hadoop/master

    (改为如下)

    192.168.10.137


接着修改slaves 文件,salve 文件表示此集群的 datanode 节点.所以在本集群中,datanode 如下


    vim /etc/hadoop/slave

    (改为如下)

    192.168.10.138
    192.168.10.139



    这里的IP实际上可以用主机名来代替,但当网格的DNS出问题的,就不能访问了,直接用IP就不用依赖DNS,提高集群可靠性!


        6. 设置 core-site.xml 文件内容如下



    <configuration>
           
            <!-- global properties -->
    <property>
         <name>hadoop.tmp.dir</name>
    <value>/usr/hadoop/tmp</value>
    </property>
     
    <!-- file system properties -->
       <property>
    <name>fs.default.name</name>
    <value>hdfs://namenode1:9000</value>
    </property>

    </configuration>

   

  3)配置hdfs-site.xml文件

  修改Hadoop中HDFS的配置,配置的备份方式默认为3,这里只有2个datanode,所以数据最大复制2份!



    <configuration>

    <property>

             <name>dfs.replication</name>

             <value>2</value>

         </property>


    </configuration>

  


7. 设置 mapred-site.xml 件内容如下

  修改Hadoop中MapReduce的配置文件,配置的是JobTracker的地址和端口。



    <configuration>

    <property>

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

    <value>namenode1:9001</value>

    </property>


    </configuration>

    

  


8. 修改 java 的运行环境变量,修改 hadoop-env.sh 如下行的内容如下

    vim  /etc/hadoop/hadoop-env.sh



修改如下行内容为

    export JAVA_HOME=/usr/java/jdk1.7.0_09




11. 设置每个节点上面的 服务为自动启动

    chkconfig --add hadoop-namenode
    chkconfig --add hadoop-jobtracker
    chkconfig hadoop-namenode on
    chkconfig hadoop-jobtracker on




4.3 启动及验证

  1)格式化HDFS文件系统

  在"Master.Hadoop"上使用普通用户hadoop进行操作。(备注:只需一次,下次启动不再需要格式化)



    hadoop namenode -format


  2)启动hadoop

  在启动前关闭集群中所有机器的防火墙,不然会出现datanode开后又自动关闭。



    service iptables stop


     不知道为什么root用户访问start-all.sh会提示无权限,所以直接修改了其所在文件夹的访问权限!(谁知道原来回复一下我,谢谢)

    chmod -R 777 /usr/sbin/

    


    启动 namenode



    start-all.sh

    

    

  可以通过以下启动日志看出,首先启动namenode 接着启动datanode1,datanode2,…,然后启动secondarynamenode。

       再启动jobtracker,然后启动tasktracker1,tasktracker2,…。


  启动 hadoop成功后,在 Master 中的 tmp 文件夹中生成了 dfs 文件夹,在Slave 中的 tmp 文件夹中均生成了 dfs 文件夹和 mapred 文件夹。


     停止 namenode

    stop-all.sh

    



 (2)验证方式二:用"hadoop dfsadmin -report"

  用这个命令可以查看Hadoop集群的状态。



4.4 网页查看集群

  1)访问jobtracker"http:192.168.1.2:50030"



      



  2)访问DFS : "http:192.168.10.137:50070"

      


    到此,Hadoop配置完毕,最大的感悟是rpm方式安装软件真是太方便了!

参考自:http://www.cnblogs.com/xia520pi/archive/2012/05/16/2503949.html 和 http://www.unxmail.com/read.php?221

文章评论

什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
10个调试和排错的小建议
10个调试和排错的小建议
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
每天工作4小时的程序员
每天工作4小时的程序员
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
程序员应该关注的一些事儿
程序员应该关注的一些事儿
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
旅行,写作,编程
旅行,写作,编程
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
我的丈夫是个程序员
我的丈夫是个程序员
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
总结2014中国互联网十大段子
总结2014中国互联网十大段子
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
代码女神横空出世
代码女神横空出世
老程序员的下场
老程序员的下场
那些争议最大的编程观点
那些争议最大的编程观点
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
程序员的鄙视链
程序员的鄙视链
程序员必看的十大电影
程序员必看的十大电影
我是如何打败拖延症的
我是如何打败拖延症的
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
如何成为一名黑客
如何成为一名黑客
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
程序员都该阅读的书
程序员都该阅读的书
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
程序员和编码员之间的区别
程序员和编码员之间的区别
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
 程序员的样子
程序员的样子
鲜为人知的编程真相
鲜为人知的编程真相
为什么程序员都是夜猫子
为什么程序员都是夜猫子
Java程序员必看电影
Java程序员必看电影
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
漫画:程序员的工作
漫画:程序员的工作
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有