- 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
- Install in Standalone Mode
本节配置一个基于 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.1
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r 15ecc87ccf4a0228f35af08fc56de536e6ce657a
Compiled by jenkins on 2015-06-29T06:04Z
Compiled with protoc 2.5.0
From source with checksum fc0a1a23fc1868e4d5ee7fa2b28a58a
This 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_HOME
export 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, 重新编译
stop之前可以通过浏览器查看 NameNode,其默认端口是50070, DataNode 的默认端口是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之前可以在;浏览器查看:
或者可以用脚本 start/stop-all.sh 进行管理
$ start-all.sh
$ stop-all.sh
版权声明:本文为博主原创文章,未经博主允许不得转载。