hadoop2.5.1单机模式简易安装教程

必要安装:
JDK1.7(JDK1.6.0_20以下的话会有问题,JDK1.6.0_20以上也行)
SSH client和service(hadoop通过脚本连接ssh管理远程节点)


免密码SSH登陆
由于hadoop需要通过ssh管理系统级守护进程,并且在运行hadoop命令时使用的是当前操作者的用户名去登陆其他机器的SSH,所以所有节点必须使用同一个账户(密码可以不同),并建立信任连接,否则管理hadoop服务的时候得输入N次管理员密码
ssh-keygen -d
该命令使用对称加密算法生成当前登陆帐号的私钥id_dsa和公钥id_dsa.pub,回车后会询问密钥保存位置,默认即可,然后会提示设置保护密钥的密码短语,为了hadoop,我们不设置密码短语,直接按两次回车,否则每次连接仍然要输入密码短语
如果本机要管理多台机器,就可以把本机的id_dsa.pub的内容添加到要管理的其他机器上的相同帐号的家目录的~/.ssh/authorized_keys文件里面,表示对本机授权认证
对于我们当前的单机模式,可以用cat命令把id_dsa.pub的内容添加到本机的authorized_keys里面
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys


之后需要手动SSH连接一次
ssh localhost
第一次连接仍然需要输入系统帐号的密码,以后就不需要了,连接成功以后就可以退出SSH


一、下载Hadoop-2.5.0,解压到/home/hadoop


二、编辑/etc/profile,在文件末尾添加环境变量设置
export JAVA_HOME="/usr/lib/jvm/java"
export HADOOP_PREFIX="/home/hadoop"
export YARN_CONF_DIR="/home/hadoop"
export HADOOP_COMMON_LIB_NATIVE_DIR="$HADOOP_PREFIX/lib/native"
export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib"
export PATH="$PATH:$HADOOP_PREFIX/bin"

别忘了source /etc/profile,让修改过的profile马上生效


三、编辑/home/hadoop/etc/hadoop/hadoop-env.sh
该文件以前已经有一行设置了JAVA_HOME,按理说已经使用了系统设置的JAVA_HOME环境变量,但其实不行,还必须得自己指定
export JAVA_HOME=${JAVA_HOME}
把上面一行改为
export JAVA_HOME=/usr/lib/jvm/java

四、编辑/home/hadoop/etc/hadoop/yarn-env.sh
这个文件测试不用特别设置JAVA_HOME也可以正常工作,如果不放心的话可以把设置JAVA_HOME的那一行注释去掉,然后改成正确的地址
# export JAVA_HOME=/home/y/libexec/jdk1.6.0/


五、编辑/home/hadoop/etc/hadoop/core-site.xml
默认configuration节点是空的,我们加入自己的配置
<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop/tmp</value>
        <description>临时文件目录,NameNode、DataNode、JournalNode等存放数据的公共目录。如果没有单独指定这三类节点的目录,则使用这里定义的目录。</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
        <description>默认的HDFS路径,当有多个HDFS集群同时工作时,用户如果不写集群名称,在这里指定!</description>
    </property>
    <property>
        <name>io.file.buffer.size</name>
        <value>4096</value>
    </property>
    <property>
        <name>ha.zookeeper.quorum</name>
        <value>hadoop101:2181,hadoop102:2181,hadoop103:2181</value>
        <description>这里是ZooKeeper集群的地址和端口。注意,数量一定是奇数,且不少于三个节点</description>
    </property>
</configuration>

六、编辑/home/hadoop/etc/hadoop/hdfs-site.xml
<configuration>
    <property>
        <name>dfs.nameservices</name>
        <value>hadoop-cluster1</value>
        <description>集群别名,可以有多个,逗号分割</description>
    </property>
    <!--
    <property>
        <name>dfs.ha.namenodes.hadoop-cluster1</name>
        <value>localhost</value>
        <description>指定NameService是hadoop-cluster1时的namenode有哪些,这里的值是逻辑名称,可以有多个,逗号分割</description>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.hadoop-cluster1.localhost</name>
        <value>localhost:9000</value>
        <description>指定名称为localhost的namenode的RPC地址</description>
    </property>
    <property>
        <name>dfs.namenode.http-address.hadoop-cluster1.localhost</name>
        <value>localhost:50070</value>
        <description>指定名称为localhost的namenode的http地址</description>
    </property>
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://hadoop101:8485;hadoop102:8485;hadoop103:8485/hadoop-cluster1</value>
        <description>hadoop-cluster1集群中指定的NameNode共享edits文件目录时,使用的JournalNode集群信息</description>
    </property>
    <property>
        <name>dfs.ha.automatic-failover.enabled.hadoop-cluster1</name>
        <value>true</value>
        <description>指定hadoop-cluster1是否启动自动故障恢复,即当NameNode出故障时,是否自动切换到另一台NameNode</description>
    </property>
    <property>
        <name>dfs.client.failover.proxy.provider.hadoop-cluster1</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
        <description>指定hadoop-cluster1出故障时,哪个实现类负责执行故障切换</description>
    </property>
    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/usr/local/hadoop/tmp/journal</value>
        <description>指定JournalNode集群在对NameNode的目录进行共享时,自己存储数据的磁盘路径</description>
    </property>
    <property>
        <name>dfs.ha.fencing.methods</name>
        <value>sshfence</value>
        <description>一旦需要NameNode切换,使用ssh方式进行操作</description>
    </property>
    <property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/root/.ssh/id_rsa</value>
        <description>如果使用ssh进行故障切换,使用ssh通信时用的密钥存储的位置</description>
    </property>
    -->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>localhost:50090</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:///home/hadoop/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:///home/hadoop/dfs/data</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
        <description>指定DataNode存储block的副本数量。默认值是3个</description>
    </property>
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
</configuration>

七、编辑/home/hadoop/etc/hadoop/mapred-site.xml
默认应该没有这个配置文件,可以将/home/hadoop/etc/hadoop/mapred-site.xml.template文件名改为mapred-site.xml
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
        <description>指定运行mapreduce的环境是yarn</description>
    </property>
    <property>
        <name>mapreduce.jobtracker.http.address</name>
        <value>localhost:50030</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>localhost:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>localhost:19888</value>
    </property>
</configuration>

八、编辑/home/hadoop/etc/hadoop/yarn-site.xml
<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>localhost:8032</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>localhost:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>localhost:8031</value>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>localhost:8033</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>localhost:8088</value>
    </property>
</configuration>

九、编辑/home/hadoop/etc/hadoop/slaves
这是设置所有的DataNode节点列表,每行一个节点主机名称,目前我们单机只需要localhost即可


十、格式化HDFS文件系统
简单点理解namenode相当于磁盘分区表,datanode相当于具体的分区,所以要使用一个磁盘嘛,大家都知道的,先格式化
hdfs namenode -format
以前可能是用
hadoop namenode -format
但是2.5.1会提示该指令已废弃,还是推荐hdfs namenode -format


十一、启动hdfs和yarn
/home/hadoop/sbin/start-dfs.sh
/home/hadoop/sbin/start-yarn.sh
关闭的时候用
/home/hadoop/sbin/stop-dfs.sh
/home/hadoop/sbin/stop-yarn.sh
这里有个命令可以关闭所有服务,但是运行的时候已经提示被废弃了,不建议使用,估计下个版本会被取消吧
/home/hadoop/sbin/start-all.sh


十二、查看java进程
[root@localhost home]# jps
3155 Jps
1797 DataNode
1913 SecondaryNameNode
2234 ResourceManager
1722 NameNode
2316 NodeManager

十三、hadoop的管理监控界面
如果以上步骤顺利的话,你可以通过浏览器打开http://localhost:50070查看hadoop的管理界面
导航栏的最后一项有两个工具,可以查看hadoop里面的文件和日志记录


十四、测试文件写入
新建一个文件test.txt,随便写些内容然后保存
hadoop fs -mkdir /wenjianjia
hadoop fs -put test.txt /wenjianjia/test.txt
以上命令是建立一个wenjianjia目录并将test.txt写入到wenjianjia目录的test.txt,然后可以到管理界面验证目录和文件是否写入


附录:
ResourceManager  http://localhost:8088
NameNode         http://localhost:50070

你可能感兴趣的:(hadoop2.5.1单机模式简易安装教程)