hadoop -- setup and configuration

来源:互联网 发布:python 符号错误 编辑:程序博客网 时间:2024/06/04 07:11

  • Hadoop Modes
  • pre-install setup
    • Creating a user
    • SSH Setup
    • installing java
  • Install Hadoop
    • Install in Standalone Mode
      • lets do a test
    • Install in Pseudo Distributed Mode
      • Hadoop setup
      • Hadoop configuration
      • YARN configuration

本节配置一个基于 linux 的 hadoop 环境。

Hadoop Modes

hadoop 支持三种模式:

  • Local/Standalone Mode: 默认设置是Standalone 模式,作为一个java 进程运行。
  • Pseudo Distributed Mode: 在一个机器上模拟分布式。hdfs, YARN, MapReduce 等这些hadoop daemon 都是一个独立的 java 进程。
  • Fully Distributed Mode: 需要两个或多个机器作为一个集群,实现真正的分布式。

pre-install setup

Creating a user

推荐为 hadoop 建一个独立的用户, 修改目录权限

$ su    passwd# useradd hadoop# passwd hadoop    New passwd:    Retype new passwd # chown -R hadoop /usr/hadoop

SSH Setup

$ ssh-keygen -t rsa $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys $ chmod 0600 ~/.ssh/authorized_keys 

然后在当前 shell 用ssh 链接 localhost 就无需输入密码了。

$ ssh localhost

installing java

$ java -version

如果这个指令可以正确的查看到java版本那么java已经争取安装,如果不能,请务必要先安装好java。

  • step1: 在这儿下载 java (jdk-*u**-OS-x64.tar.gz).
  • setp2: 切换到java所在文件夹并解压。
$ cd Downloads/ $ tar zxf jdk-7u71-linux-x64.gz $ ls jdk1.7.0_71   jdk-7u71-linux-x64.gz 
  • step3: 使所有用户可以使用java, 移动java到“/usr/local”, 或者其他你希望安装的地方。
$ su password: # mv jdk1.7.0_71 /usr/local/ 
  • step4
    在 ~/.bashrc 里面添加以下内容:
export JAVA_HOME=/usr/local/jdk1.7.0_71 export PATH=$PATH:$JAVA_HOME/bin 
$ source ~/.bashrc
  • step5
    为方便管理,把java 加入到版本管理器,ubuntu 下是 update-alternatives:
# alternatives --install /usr/bin/java java usr/local/java/bin/java 2# alternatives --install /usr/bin/javac javac usr/local/java/bin/javac 2# alternatives --install /usr/bin/jar jar usr/local/java/bin/jar 2# alternatives --set java usr/local/java/bin/java# alternatives --set javac usr/local/java/bin/javac# alternatives --set jar usr/local/java/bin/jar

Install Hadoop

在这找到你需要的版本,下载Hadoop, 并加压. 我下载的是 hadoop-2.7.1

$ su password: # cd /usr/local # wget http://apache.claz.org/hadoop/common/hadoop-2.7.1/hadoop-2.4.1.tar.gz# tar xzf hadoop-2.7.1.tar.gz # chmod -R 777 /usr/local/hadop-2.7.1

Install in Standalone Mode

在这个模式下没有daemons, 并且都在同一个 JVM 里运行。
把下面的命令写入 ~/.bashrc

export HADOOP_HOME=/usr/local/hadoop export PATH=$HADOOP_HOME/bin:$PATH
$ source ~/.bashrc

然后确认一下 Hadoop 是否可以正常工作:

$ hadoop version

如果安装成功会显示类似以下的结果(这是我的输出):

Hadoop 2.7.1Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r 15ecc87ccf4a0228f35af08fc56de536e6ce657aCompiled by jenkins on 2015-06-29T06:04ZCompiled with protoc 2.5.0From source with checksum fc0a1a23fc1868e4d5ee7fa2b28a58aThis command was run using /usr/local/hadoop-2.7.1/share/hadoop/common/hadoop-common-2.7.1.jar

let’s do a test

现在,我们用 standalone 模式下的 hadoop 做一个小小 wordcount 的测验

$ cd $HADOOP_HOME$ mkdir input$ cp *.txt $ hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar  wordcount input ouput  #请查看你所安装按本的jar文件的名字$ cat output/*

然后,不出意外的话,你应该就可以看到文件里单词的个数了。

Install in Pseudo Distributed Mode

Hadoop setup

把下面的命令写入 ~/.bashrc

export HADOOP_HOME=/usr/local/hadoop export HADOOP_MAPRED_HOME=$HADOOP_HOME export HADOOP_COMMON_HOME=$HADOOP_HOME export HADOOP_HDFS_HOME=$HADOOP_HOME export YARN_HOME=$HADOOP_HOME export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin export HADOOP_INSTALL=$HADOOP_HOMEexport HADOOP_LOG_DIR=$HADOOP_HOME/logs #这个是默认位置,也可以自定义你希望的位置
$ source ~/.bashrc

Hadoop configuration

修改 $HADOOP_HOME/etc/hadoop/hadoop-env.sh 中设置 java 环境变量 JAVA_HOME

#export JAVA_HOME=${JAVA_HOME}export JAVA_HOME=/opt/jdk1.8.0_81

修改 $HADOOP_HOME/etc/hadoop/core-site.xml 文件:

<configuration>    <property>        <name>fs.defaultFS</name> //也可以写作 fs.default.name        <value>hdfs://localhost:9000</value>    </property></configuration>

修改 $HADOOP_HOME/etc/hadoop/core-site.xml 文件:

<configuration>    <property>        <name>dfs.replication</name>        <value>1</value>    </property>     <property>      <name>dfs.name.dir</name>      <value>file:///home/hadoop/hadoopinfra/hdfs/namenode </value> //这里file后面是三个斜杠,我打成了两个,一直启动不起来NameNode.   </property>   <property>      <name>dfs.data.dir</name>       <value>file:///home/hadoop/hadoopinfra/hdfs/datanode </value>    </property></configuration>

格式化 HDFS 文件系统

$ hdfs namenode -format

启动 NameNode 和 DataNode 的守护进程

$ start-dfs.sh$ jps  # 查看是否正常启动    172075 Jps    169799 SecondaryNameNode    34918 Nailgun    169311 NameNode    169483 DataNode$ stop-dfs.sh

note: 如果你是按博客里面的内容下载的hadoop-..*.tar.gz的安装包,并且如果你的机器是64位的话,你会出现一个WARNING,如下:

WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

这个是因为安装包里面的 $HADOOP_HOME/lib/native/libhadoop.so.1.0.0 这个本地的 Hadoop 库是在32位机器上编译的,可以做以下选择:
1. 忽略它,因为只是个WARN,并不会影响HADOOP 的功能
2. 担心它会造成不稳定,下载 Hadoop 的源码包 hadoop-..*-src.tar.gz, 重新编译
具体可以参考【链接1】【链接2】

stop之前可以通过浏览器查看 NameNode,其默认端口是50070, DataNode 的默认端口是50030
+ http://localhost:50070
+ http://localhost:50030
这里写图片描述
如果如果没有正常启动可以在 $HADOOP_LOG_DIR 目录下查看对应的log文件里的内容,对应调试。

YARN configuration

修改 $HADOOP_HOME/etc/hadoop/mapred-site.xml 文件:

<configuration>    <property>        <name>mapreduce.framework.name</name>        <value>yarn</value>    </property></configuration>

修改 $HADOOP_HOME/etc/hadoop/yarn-site.xml 文件:

<configuration>    <property>        <name>yarn.nodemanager.aux-services</name>        <value>mapreduce_shuffle</value>    </property></configuration>
$ start-yarn.sh$ jps  # 查看是否正常启动    152423 JournalNode    173170 Jps    34918 Nailgun    172778 ResourceManager    172956 NodeManager$ stop-yarn.sh

ResourceManager默认的浏览器端口是8088,stop之前可以在;浏览器查看:
+ http://localhost:8088
这里写图片描述
或者可以用脚本 start/stop-all.sh 进行管理

$ start-all.sh$ stop-all.sh
0 0
原创粉丝点击