Hadoop分布式 安装(3台节点)

2019-03-28 13:59|来源: 网络

1 环境准备:3台CentOS5.5操作系统的主机,jdk为OpenJDK1.6.0 ,Hadoop版本为0.20.2。

2 修改hosts文件,把整个聚群的主机名和IP对应起来,每台机器都需要做。(我用主机名来做hadoop标志,为后续zookeeper做准备,zookeeper只能用主机名,比较搓)

  vi /etc/hosts

  192.168.110.223  Paas1

  192.168.110.222 Pass2

  192.168.110.224 Paas3

3 配置免密码SSH登录 (保证master和slave之间的通信,slave之间可以不做要求)。

  原理是在本机生成一个key,然后附加到对方机器的key文件中,这样就可以实现免密码登录。

  $ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa  ###在本机产生key

 $ ssh-copy-id -i id_dsa.pub hadoop@Pass3 将本机的公钥传输到对方机器的autorized_key文件中,如果没有此文件,则会自动创建此文件。(如果有则添加)

 $ ssh hadoop@paas3 测试是否操作成功,如果不需要输入密码就可以登录,表示成功。

备注:如果改变了文件名字 需要用root用户修改/etc/ssh/ssh_config中的key:IdentityFile 和 /etc/ssh/ssh_config中的key:PubkeyAuthentication 默认的不需要修改 ,重启ssh服务service sshd restart。

4 hadoop的初始化文件
#tar -zxvf hadoop-0.20.2.tar.gz
#ln -s hadoop-0.20.2 hadoop
由于上述目录中hadoop的配置文件和hadoop的安装目录是放在一起的,这样一旦日后升级hadoop版本的时候所有的配置文件都会被覆盖,因 此将配置文件与安装目录分离,一 种比较好的方法就是建立一个存放配置文件的目录,/hadoop/hadoop-config/,然后将 /hadoop/hadoop/conf/目录中的core-site.xml,slaves,hadoop-env.sh,masters, hdfs-
site.xml,mapred-site.xml,这6个文件拷贝到 /hadoop/hadoop-config/目录中,并指定环境变量$HADOOP_CONF_DIR指向该目录。

( 环境变量在~/.bashrc 中设定 ,

    vim ~/.bashrc 添加

    export HADOOP_CONF_DIR=/hadoop/hadoop-config
    export HBASE_CONF_DIR=/hadoop/hbase-config

  )

#mkdir /hadoop/hadoop-config
#cd /hadoop/hadoop/conf/
#cp core-site.xml slaves hadoop-env.sh masters hdfs-site.xml mapred-site.xml /hadoop/hadoop-config/   拷贝这些文件到hadoop-config下。

修改6个文件
masters:
Paas1

slaves:
Pass2 (机器名字起错了,后期也没有修改)
Paas3

#切忌不要创建:/hadoop/hadoop/tmp
hadoop-env.sh:
export JAVA_HOME=/usr/local/jdk6
export HADOOP_PID_DIR=/hadoop/hadoop/tmp

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>
   <name>fs.default.name</name>
   <value>hdfs://master:54310</value>
</property>
</configuration>

#切忌不要创建:/hadoop/hadoop/name
#mkdir /hadoop/hadoop/data
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.name.dir</name>
<value>/hadoop/hadoop-data/dfs.name.dir</value>   #hadoop的name目录路径    
</property>
<property>
<name>dfs.data.dir</name>
<value>/hadoop/hadoop-data/dfs.data.dir</value>    #hadoop的data目录路径
</property>
<property>
   <name>dfs.replication</name>
   <value>3</value>     #指定 HDFS 中每个 Block 被复制的次数,www.linuxidc.com起数据冗余备份的作用。在典型的生产系统中,这个数常常设置为3
</property>

 <property> 
                <name>dfs.permissions</name>   ## 是否要做权限限制
                <value>false</value> 
   </property>

</configuration>

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>192.168.110.223:9001</value>    ##  mapred 设置job端口
        </property> 
        <property> 
                <name>mapred.system.dir</name> 
                <value>/hadoop/hadoop-data/mapred.system.dir</value>    ##  mapred 设置系统目录
        </property> 
        <property> 
                <name>mapred.local.dir</name> 
                <value>/hadoop/hadoop-data/mapred.local.dir</value>    ##  mapred 设置本地目录
        </property>
</configuration>

5 开始启动hadoop
进入master的hadoop的bin目录./hadoop namenode -format 格式化namenode
./start-all.sh 启动hadoop

如果启动了 可以通过http://192.168.110.223:50070访问hadoop的web控制台。

如果没有启动 需要查看日志。

备注:在linux下用jdk自带的工具jps非常辩解,一般这样使用#$JAVA_HOME/bin/jps,能反应出各java进程的具体内容,如namenode进程,jobtrack进程等。当然有些openjdk版本可能简化了这个功能,这样可以换一个jdk。

6 hadoop简单测试
#cd /hadoop/hadoop/bin
#./hadoop dfs -mkdir testdir
#./hadoop dfs -put /root/install.log testdir/install.log-dfs
将/root/install.log 存储到hdfs中的testdir中,重命名为install.log-dfs
#./hadoop dfs -ls
#./hadoop dfs -ls testdir

相关问答

更多
  • Slave填写Master和Slave的IP地址,Master可以同时做Master和Slave
  • 先回答你标题的提问:hadoop完全分布式:3个及以上的实体机或者虚拟机组件的机群。hadoop伪分布式:一个节点看了以上两点相信你已经明白了,“用vm多装几个unbuntu配置完全分布式,然后做实验”这是完全可行的。实际上我们通常也是这么做的,当然可能要求你的电脑cpu和内存足够支撑你这一计划。一点建议:如果你要开发基于Hadoop的分布式程序,伪分布式足够你实验了。如果你要做很多其他事情,比如玩玩cm,玩玩oozie,玩玩hbase,建议装多个虚拟机。
  • 若在windows的Eclipse工程中直接启动mapreduc程序,需要先把hadoop集群的配置目录下的xml都拷贝到src目录下,让程序自动读取集群的地址后去进行分布式运行(您也可以自己写java代码去设置job的configuration属性)。   若不拷贝,工程中bin目录没有完整的xml配置文件,则windows执行的mapreduce程序全部通过本机的jvm执行,作业名也是带有“local"字眼的作业,如 job_local2062122004_0001。 这不是真正的分布式运行mapred ...
  • 启动hdfs,mr和yarn服务看是否能够正常启动,然后用hadoop fs -ls /是否能够正常执行
  • 你可以输入JPS查看一下进程 一般你的master上是namenode secondarynamenode 和jobtracker三个进程 你的slaves上 有各自的datanode 和tasktracker两个进程 你看看是不是有各自进程都启动起来了 启动起来了就是分布式 如果只有一台机子有进程 那你就重新把那些配置文件再设置一下
  • 在hadoop的不同节点上的安装应该几乎相同,因此,您必须在群集的每个节点中指定HADOOP_HOME(我还指定HADOOP_PREFIX到同一位置)指向您的hadoop安装。 您的每个节点都应该能够通过ssh“无密码”模式相互连接,所以我相信你问题的最后一部分没有多大意义;) The installation on your different nodes of hadoop should be almost identical, and for that reason, you must specify ...
  • 要知道您是以独立还是伪分布模式运行hadoop,请验证您的配置文件。 以下信息可能有帮助。 To know if you are running hadoop in Standalone or Pseudo distributed mode, verify your configuration files. Below information might help.
  • 修改/etc/hosts以包含主机名环回映射: 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 127.0.1.1 is-joshbloom-hadoop ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 您的问题是您的机器不知道如何解析主机名is-joshbloom-hadoop到特定 ...
  • 我删除了/ etc / hosts中与127.0.0.1相关的所有条目并将hdfs-site.xml复制到所有节点中的$ HBASE_HOME / conf之后,问题得以解决 The problem solved after I removed all entries related to 127.0.0.1 in /etc/hosts and copied the hdfs-site.xml to $HBASE_HOME/conf in all nodes
  • 是的,文件通过网络传输,通常是通过HDFS传输。 与使用HDFS进行非数据本地任务相比,它不会对网络造成任何压力。 如果文件很大,可能会出现网络拥塞,但是你已经把你的jar推送到所有这些任务跟踪器,所以只要你的文件不比你的文件大得多,你的开销就不应该是太糟糕了。 文件的复制与最终将拉动此文件的任务跟踪器的数量完全分开。 复制也将从一个节点链接到另一个节点,无论如何都是具有容错分布式文件系统的成本。 同样,网络拥塞不再是将jar推送到所有任务跟踪器的问题,假设分布式缓存中的文件与jar的大小相同。 总的来说, ...