Hadoop2.3.0伪分布式安装笔记
安装环境:ubuntu 13.10, jdk1.7.0_51, hadoop 2.3.0
一、在ubuntu下安装jdk
linux下的java有两种,一种是openjdk另外一种是sun java。因为一些原因,Oracle Java 无法从 Ubuntu 的软件库中取得,取而代之的是 OpenJDK,不过 OpenJDK 在运行某些程序时会出现问题所以最好还是安装Oracle Java.
-
先去 Oracle下载Linux下的JDK压缩包,http://www.oracle.com/technetwork/java/javase/downloads/index.html,下好后直接解压。
-
进入在存放jdk文件夹的当前目录,将解压好的jdk1.7.0_10文件夹用最高权限复移动到/usr/lib/jvm目录里,此时即使没有jvm目录也可以执行如下命令,jvm文件夹将得到创建。
sudo mv jdk1.7.0_10 /usr/lib/jvm/
- 接下来需要设置环境变量,修改/etc/profile配置文件
sudo gedit /etc/profile
在末尾加上:export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_10 export JRE_HOME=/usr/lib/jvm/jdk1.7.0_10/jre export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$PATH
然后保存关闭,此时在命令行输入java -version将会仍然显示java没有安装。此时,需要使用source更新下/etc/profile文件:source /etc/profile
-
使用java -version命令可以看到如下输出:
kk@kk-Dell-System-Inspiron-N4110:~$ java -version java version "1.7.0_51" Java(TM) SE Runtime Environment (build 1.7.0_51-b13) Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
到此,已经将oracle jdk配置完成。
如果之前系统里面已经安装了openjdk,可以使用如下方法将默认jdk更改过来: -
将系统默认的jdk修改过来:
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_10/bin/java 300 sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0_10/bin/javac 300 sudo update-alternatives --config java sudo update-alternatives --config javac
至此jdk的安装已经完成
二、建立ssh无密码登陆本机
由于启动与停止hadoop时需要多次输入密码登录本机与hadoop的master,所以需要建立ssh无密码登陆,减少不必要的操作。
-
安装openssh-server:
sudo apt-getinstall ssh openssh-server
-
在Master节点上执行以下命令:
ssh-keygen –t rsa –P ''
这条命令是生成其无密码密钥对,询问其保存路径时直接回车采用默认路径。生成的密钥对:id_rsa和id_rsa.pub,默认存储在"/home/username/.ssh"目录下。 -
在Master节点上做如下配置,把id_rsa.pub追加到授权的key里面去。
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
在验证前,需要做两件事儿。第一件事儿是修改文件"authorized_keys"权限(权限的设置非常重要,因为不安全的设置安全设置,会让你不能使用RSA功能),另一件事儿是用root用户设置"/etc/ssh/sshd_config"的内容。使其无密码登录有效。
-
修改文件"authorized_keys"权限
chmod 600 ~/.ssh/authorized_keys
备注:如果不进行设置,在验证时,扔会提示你输入密码。 - 修改ssh配置文件
用root用户登录服务器修改SSH配置文件"/etc/ssh/sshd_config"的下列内容:
sudo gedit /etc/ssh/sshd_config
RSAAuthentication yes # 启用 RSA 认证 PubkeyAuthentication yes # 启用公钥私钥配对认证方式 AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)
-
重启ssh服务使刚才设置生效
service sshd restart
-
退出root登录,使用普通用户验证ssh无密码登陆是否成功
ssh localhost
注:成功的标志为,ssh localhost不需要输入密码,而且后面启动与停止hadoop时也不需要输入密码
三、安装hadoop
安装准备
-
先到官网(http://mirrors.cnnic.cn/apache/hadoop/common/)下载hadoop的压缩包,将它复制到安装目录 /usr/local/下
sudo cp hadoop-2.3.0.tar.gz /usr/local/
-
解压hadoop-2.3.0 .tar.gz
cd /usr/local sudo tar -zxf hadoop-2.3.0 .tar.gz
-
将解压出的文件夹改名为hadoop
sudo mv hadoop- 2.3.0 hadoop
-
将该hadoop文件夹的属主用户设为当前用户
sudo chown -R username:usergroup hadoop
其中username为当前用户名,usergroup为当前用户所在的组,若为主用户,则usergroup应为root -
将hadoop添加到系统环境变量
sudo gedit /etc/profile
在最后添加:export HADOOP_HOME=/usr/local/hadoop export HADOOP_INSTALL=$HADOOP_HOME export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin export HADOOP_MAPRED_HOME=$HADOOP_HOME export HADOOP_COMMON_HOME=$HADOOP_HOME export HADOOP_HDFS_HOME=$HADOOP_HOME export YARN_HOME=$HADOOP_HOME
保存并退出。 -
更新环境变量
source /etc/profile
修改hadoop配置文件
- 在根目录下创建三个目录:
mkdir ~/dfs/ mkdir ~/dfs/name mkdir ~/dfs/data mkdir ~/temp
-
修改etc/hadoop目录下配置7个文件
$HADPP_HOME/etc/hadoop/core-site.xml $HADPP_HOME/etc/hadoop/hadoop-env.sh $HADPP_HOME/etc/hadoop/hdfs-site.xml $HADPP_HOME/etc/hadoop/mapred-site.xml $HADPP_HOME/etc/hadoop/slaves $HADPP_HOME/etc/hadoop/yarn-env.sh $HADPP_HOME/etc/hadoop/yarn-site.xml
以上个别文件默认不存在的,可以复制相应的template文件获得。比如:sudo cp yarn-site.xml.template yarn-site.xml
配置文件1:hadoop-env.sh 修改JAVA_HOME值(export JAVA_HOME=/usr/java/jvm/jdk1.7.0_10) ********以上JAVA_HOME为相应的jdk安装目录**********
配置文件2:yarn-env.sh 修改JAVA_HOME值(exportJAVA_HOME=/usr/java/jdk1.7.0_40) ********以上JAVA_HOME为相应的jdk安装目录**********
配置文件3:slaves (这个文件里面保存所有slave节点) 添加以下内容:(为数据节点服务器相应的hostname,localhost保留) n1 n2 添加以后该文件有三行,即: localhost n1 n2
配置文件4:core-site.xml 在<configuration>节点中间添加下面的内容 <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> <property> <name>hadoop.tem.dir</name> <value>file:/home/hduser/temp</value> </property>
配置文件5:hdfs-site.xml 在<configuration>节点中间添加下面的内容 <property> <name>dfs.namenode.name.dir</name> <value>file:/home/kk/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/home/kk/dfs/data</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> ********以上文件路径为之前在根目录下创建的路径**********
配置文件6:mapred-site.xml 在<configuration>节点中间添加下面的内容 <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapred.job.tracker</name> <value>localhost:9001</value> </property> <property> <name>mapred.remote.os</name> <value>Linux</value> <description> Remote MapReduce framework's OS, can be either Linux or Windows </description> </property> <property> <name>mapreduce.application.classpath</name> <value>$HADOOP_CONF_DIR, $HADOOP_COMMON_HOME/share/hadoop/common/*, $HADOOP_COMMON_HOME/share/hadoop/common/lib/*, $HADOOP_HDFS_HOME/share/hadoop/hdfs/*, $HADOOP_HDFS_HOME/share/hadoop/hdfs/lib/*, $HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*, $HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*, $HADOOP_YARN_HOME/share/hadoop/yarn/*, $HADOOP_YARN_HOME/share/hadoop/yarn/lib/* </value> </property>
配置文件7:yarn-site.xml 在<configuration>节点中间添加下面的内容 <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.application.classpath</name> <value> $HADOOP_HOME/etc/hadoop, $HADOOP_COMMON_HOME/share/hadoop/common/*, $HADOOP_COMMON_HOME/share/hadoop/common/lib/*, $HADOOP_HDFS_HOME/share/hadoop/hdfs/*, $HADOOP_HDFS_HOME/share/hadoop/hdfs/lib/*, $HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*, $HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*, $HADOOP_YARN_HOME/share/hadoop/yarn/*, $HADOOP_YARN_HOME/share/hadoop/yarn/lib/* </value> </property>
在单机模式下运行hadoop
-
进入hadoop目录下,格式化hdfs文件系统,初次运行hadoop时一定要有该操作
cd /usr/local/hadoop/ bin/hadoop namenode -format
之后每次对hadoop配置文件进行修改后必须再次格式化hdfs文件系统,否则会报错。
再次格式化hdfs文件系统的步骤:备份hdfs文件系统,删除配置文件中hdfs-site.xml中name.dir与data.dir目录下的所有文件,格式化hdfs文件系统,回复hdfs数据。 -
启动hadoop
sbin/start-all.sh
也可按推荐使用以下命令启动sbin/start-hdfs.sh sbin/start-yarn.sh
-
通过浏览器查看hadoop运行状态