注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

无明

 
 
 

日志

 
 

configure hadoop  

2012-12-26 12:23:44|  分类: hadoop |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
每台机器都需要安装hadoop 和 jdk 
禁用iptables,selinux
service iptables stop
chkconfig iptables off
swapoff -a

host24  to host29安装jdk包
#  chmod +x jdk-6u31-linux-x64.bin
# ./jdk-6u31-linux-x64.bin
# cp jdk1.6.0_31/  /usr/local/
# tail -2 /etc/profile
 export JAVA_HOME=/usr/local/jdk1.6.0_31/
 export PATH=$PATH:$JAVA_HOME/bin
# cd /usr/bin/
# rm java  -rf ##删除系统自带的,换成新安装的jdk包
# ln -s /usr/local/jdk1.6.0_31/bin/java
# ll java
# java -version
# javac -version

因为集群的启动是从NameNode开始的,于是DataNode的运行需要NameNode的远程调用,Hadoop使用ssh命令远程运行DataNode节点,这就是为什么Hadoop需要ssh的支持

比如:
在host029上需要生成一个密钥对,即一个私钥和一个公钥。将公钥拷贝到host019节点上,如此一来,当(host028)发起ssh连接的时候,host028上就会生成一个随机数并用host029的公钥对这个随机数进行加密,并且发送给029,029收到这个加密的数以后用私钥进行解密,并将解密后的数返回host028,host028确认解密的数无误后就允许host029进行连接了。这就完成了一次公钥认证过程。

根据Hadoop文档的描述“The Hadoop daemons are NameNode/DataNode and JobTracker/TaskTracker.”可以看出Hadoop核心守护程序就是由NameNode/DataNode 和JobTracker/TaskTracker这几个角色构成。   Hadoop的DFS需要确立NameNode与DataNode角色,一般NameNode会部署到一台单独的服务器上而不与DataNode共同同一机器。另外Map/Reduce服务也需要确立JobTracker和TaskTracker的角色,一般JobTracker与NameNode共用一台机器作为master,而TaskTracker与DataNode同属于slave。至于NameNode/DataNode和JobTracker/TaskTracker的概念这里就不多讲了,需要了解的可以参看相关文档。   在这里我们使用029作为NameNode与JobTracker,其它机器作为DataNode和TaskTracker
host29创建公钥并传给每个节点
[root@sin2-pekaurora-bdcqe029 ~]# ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
[root@sin2-pekaurora-bdcqe029 ~]# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys  
[root@sin2-pekaurora-bdcqe029 ~]# scp ~/.ssh/id_rsa.pub root@sin2-pekaurora-bdcqe028:/tmp/
[root@sin2-pekaurora-bdcqe029 ~]# scp ~/.ssh/id_rsa.pub root@sin2-pekaurora-bdcqe027:/tmp/
[root@sin2-pekaurora-bdcqe029 ~]# scp ~/.ssh/id_rsa.pub root@sin2-pekaurora-bdcqe026:/tmp/
[root@sin2-pekaurora-bdcqe029 ~]# scp ~/.ssh/id_rsa.pub root@sin2-pekaurora-bdcqe025:/tmp/
[root@sin2-pekaurora-bdcqe029 ~]# scp ~/.ssh/id_rsa.pub root@sin2-pekaurora-bdcqe024:/tmp/

各节点把公钥存到.ssh目录下
[root@sin2-pekaurora-bdcqe024 tmp]# cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
[root@sin2-pekaurora-bdcqe025 tmp]# cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys 
[root@sin2-pekaurora-bdcqe026 tmp]# cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys 
[root@sin2-pekaurora-bdcqe027 tmp]# cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys 
[root@sin2-pekaurora-bdcqe028 tmp]# cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys 

~~~~~~~
各个节点创建公钥传给master节点
[root@sin2-pekaurora-bdcqe024 .ssh]# ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
[root@sin2-pekaurora-bdcqe025 .ssh]# ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
[root@sin2-pekaurora-bdcqe026 .ssh]# ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
[root@sin2-pekaurora-bdcqe027 .ssh]# ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
[root@sin2-pekaurora-bdcqe028 .ssh]# ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa


[root@sin2-pekaurora-bdcqe029 .ssh]# scp sin2-pekaurora-bdcqe024:/root/.ssh/id_rsa.pub /tmp/
[root@sin2-pekaurora-bdcqe029 .ssh]# cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
[root@sin2-pekaurora-bdcqe029 .ssh]# scp sin2-pekaurora-bdcqe025:/root/.ssh/id_rsa.pub /tmp/
[root@sin2-pekaurora-bdcqe029 .ssh]# cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
[root@sin2-pekaurora-bdcqe029 .ssh]# scp sin2-pekaurora-bdcqe026:/root/.ssh/id_rsa.pub /tmp/
[root@sin2-pekaurora-bdcqe029 .ssh]# cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
[root@sin2-pekaurora-bdcqe029 .ssh]# scp sin2-pekaurora-bdcqe027:/root/.ssh/id_rsa.pub /tmp/
[root@sin2-pekaurora-bdcqe029 .ssh]# cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
[root@sin2-pekaurora-bdcqe029 .ssh]# scp sin2-pekaurora-bdcqe028:/root/.ssh/id_rsa.pub /tmp/
[root@sin2-pekaurora-bdcqe029 .ssh]# cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys

29主机master 自已登录到自已机器上不用密码
[root@sin2-pekaurora-bdcqe029 conf]# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

每台主机添加主机名
[root@sin2-pekaurora-bdcqe024 ~]# vi /etc/hosts

10.111.90.24    sin2-pekaurora-bdcqe024
10.111.90.25    sin2-pekaurora-bdcqe025
10.111.90.26    sin2-pekaurora-bdcqe026
10.111.90.27    sin2-pekaurora-bdcqe027
10.111.90.28    sin2-pekaurora-bdcqe028
10.111.90.29    sin2-pekaurora-bdcqe029
~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
host29主机master配置hadoop

[root@sin2-pekaurora-bdcqe029 conf]# pwd
/usr/local/hadoop-1.0.1/conf

在$HADOOP_HOME/conf目录中存在masters和slaves这两个文件,用来做Hadoop的主从配置。上面已经提到了Hadoop主要由NameNode/DataNode 和JobTracker/TaskTracker构成,在主从配置里我们一般将NameNode和JobTracker列为主机,其它的共为从机,于是对于此处的配置应该是
[root@sin2-pekaurora-bdcqe029 conf]# cat masters 
10.111.90.29
[root@sin2-pekaurora-bdcqe029 conf]# cat slaves 
10.111.90.24 
10.111.90.25  
10.111.90.26
10.111.90.27
10.111.90.28

定义了Hadoop启动时需要的环境变量设置
[root@sin2-pekaurora-bdcqe029 conf]# tail -6 hadoop-env.sh 
export HADOOP_HOME=/usr/local/hadoop-1.0.1
export HADOOP_CONF_DIR=$HADOOP_HOME/conf
export HADOOP_SLAVES=${HADOOP_HOME}/conf/slaves
export HADOOP_MASTER=10.111.90.29:/usr/local/hadoop-1.0.1
export JAVA_HOME=/usr/local/jdk1.6.0_31
export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true


Hadoop 包括一组默认配置文件($HADOOP_HOME/src目录下的core/core-default.xml, hdfs/hdfs-default.xml 和mapred/mapred-default.xml),大家可以先好好看看并理解默认配置文件中的那些属性。虽然默认配置文件能让Hadoop核心程序顺利启动,但对于开发人员来说一般需要自己的来设置一些常规配置以满足开发和业务的需求,所以我们需要对默认配置文件的值进行覆盖,具体方法如下。   

$HADOOP_HOME/conf/core-site.xml是Hadoop的核心配置文件,对应并覆盖core-default.xml中的配置项。我们一般在这个文件中增加如下配置:
[root@sin2-pekaurora-bdcqe029 conf]# cat core-site.xml  
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
    <property> <!-- 用于dfs命令模块中指定默认的文件系统协议 -->
        <name>fs.default.name</name>
        <value>hdfs://sin2-pekaurora-bdcqe029:9000</value>  
        <description>
            The name of the default file system. A URI whose scheme and authority determine the FileSystem implementation.
        </description>
    </property>
</configuration>

$HADOOP_HOME/conf/mapred-site.xml是Map/Reduce的配置文件,对应并覆盖mapred-default.xml中的配置项。
[root@sin2-pekaurora-bdcqe029 conf]# cat mapred-site.xml 
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
    <property>
        <name>mapred.job.tracker</name>
        <value>sin2-pekaurora-bdcqe029:9001</value>
        <description>The host and port that the MapReduce job tracker runsat.</description>
   </property>
   <property>
        <name>mapred.local.dir</name>
        <value>/hadoop1,/hadoop2,/hadoop3,/hadoop4,/hadoop5,/hadoop6,/hadoop7,/hadoop8</value>
        <description></description>
   </property>
</configuration>

 $HADOOP_HOME/conf/hdfs-site.xml是HDFS的配置文件,对应并覆盖hdfs-default.xml中的配置项。我们一般在这个文件中增加如下配置
[root@sin2-pekaurora-bdcqe029 conf]# cat hdfs-site.xml 
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
   <property>   
       <name>dfs.replication</name>   <!-- 数据需要备份的数-->
       <value>5</value>   
   </property> 
   <property>
      <!-- DFS中存储文件数据的目录 -->
      <name>dfs.data.dir</name>
      <value>/hadoop1,/hadoop2,/hadoop3,/hadoop4,/hadoop5,/hadoop6,/hadoop7,/hadoop8</value>
   </property>
</configuration>


值得注意的是Hadoop集群的所有机器的配置应该保持一致,一般我们在配置完master后,使用scp将配置文件同步到集群的其它服务器上
[root@sin2-pekaurora-bdcqe029  local]# scp  -r hadoop-1.0.1/ 10.111.90.24:/usr/local/
[root@sin2-pekaurora-bdcqe029  local]# scp  -r hadoop-1.0.1/ 10.111.90.25:/usr/local/
[root@sin2-pekaurora-bdcqe029  local]# scp  -r hadoop-1.0.1/ 10.111.90.26:/usr/local/
[root@sin2-pekaurora-bdcqe029  local]# scp  -r hadoop-1.0.1/ 10.111.90.27:/usr/local/
[root@sin2-pekaurora-bdcqe029  local]# scp  -r hadoop-1.0.1/ 10.111.90.28:/usr/local/


为集群的启动是从NameNode开始的,于是DataNode的运行需要NameNode的远程调用,Hadoop使用ssh命令远程运行DataNode节点,这就是为什么Hadoop需要ssh的支持。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

每台host配置hadoop变量
[root@sin2-pekaurora-bdcqe029 bin]# tail -2 /etc/profile
export HADOOP_HOME=/usr/local/hadoop-1.0.1
export PATH=$PATH:$HADOOP_HOME/bin

host29 master上面
# cd /usr/local/hadoop-1.0.1/bin
# ./hadoop namenode -format   #启动服务之前,我们需要做一件事情,非常重要,那就是格式化命名空间
启动hadoop:<HADOOP_HOME>/bin/start-all.sh  
停止hadoop:<HADOOP_HOME>/bin/stop-all.sh

说明:      
(1) 执行启动Hadoop进程后, 
? 在master服务器会启动3个java进程,分别的NameNode,SecondNameNode,JobTracker,在LOG目录下会产生2个文件,分别对应NameNode的运行日志和JobTracker的运行日志,  
? 在slave服务器会启动2个java进程,分别为DataNode,TaskTracker,,在LOG目录下会产生2个文件,分别对应DataNode的运行日志和TaskTracker的运行日志,可以通过查看日志分析hadoop的启动是否正确。 
(2) 通过IE浏览分布式文件系统中的文件   
访问 http://10.111.90.29:50030 可以查看JobTracker的运行状态。
 ? 访问 http://10.111.90.24:50060可以查看 TaskTracker的运行状态。   
 ?访问 http://10.111.90.24:50070可以查看NameNode以及整个分布式文件系统的状态。 
~~~~~~~~~~~~~~~~~~~~~
Warning: $HADOOP_HOME is deprecated.

解决方法如下:

1.在HOME的目录编辑.bash_profile,添加一个环境变量。

export HADOOP_HOME_WARN_SUPPRESS=1
~~~~~~~~~~~~~~~~~~
进入hadoop目录,在bin/下面有很多启动脚本,可以根据自己的需要来启动。

* start-all.sh 启动所有的Hadoop守护。包括namenode, datanode, jobtracker, tasktrack
* stop-all.sh 停止所有的Hadoop
* start-mapred.sh 启动Map/Reduce守护。包括Jobtracker和Tasktrack
* stop-mapred.sh 停止Map/Reduce守护
* start-dfs.sh 启动Hadoop DFS守护.Namenode和Datanode
* stop-dfs.sh 停止DFS守护

8、HDFS 操作
进入Hadoop目录,运行bin/目录的hadoop命令,可以查看Haoop所有支持的操作及其用法,这里以几个简单的操作为例。

建立目录

[master@hadoop]$bin/hadoop dfs -mkdir testdir

在HDFS中建立一个名为testdir的目录

复制文件

[master@hadoop]$bin/hadoop dfs -put /home/dbrg/large.zip testfile.zip

把本地文件large.zip拷贝到HDFS的根目录/user/dbrg/下,文件名为testfile.zip

查看现有文件

[master@hadoop]$bin/hadoop dfs -ls

  评论这张
 
阅读(492)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018