此次配置为单机版的伪分布式,其中hadoop 的版本为2.2,系统为Fedora16,JDK 版本为 jdk1.7.0_51。
昨天折腾了好半天,终于把hadoop给配置好了。一开始总是报错,说找不到类,后来发现是hadoop2.3的原因,换成2.2立马就好了。
(但是好机油在Mac上配置2.3却没问题。怪哉!)
下面开始配置之旅吧~
安装配置jdk7
话说一开始直接用的fedora的openJDK,被人鄙视太low了。本来不打算换,由于不晓得是hadoop版本原因,我就换了jdk。
- 到Oracle 官网下载最新版JDK,本次安装下载的是jdk-7u51-linux-i586.tar.gz
- 从终端cd 到下载目录,输入以下命令:
tar ‐zxvf jdk-7u51-linux-i586.tar.gz
- 将解压的目录移动到自己想放置的目录,在本项目中,执行了mv jdk1.7.0_51 /usr/lib/jvm
其中jdk1.7.0_51 为解压后的文件目录名,我们将其移动到usr/lib/jvm 下了。(如果安装的是OpenJDK,安装路径在/usr/lib/jvm 下,不是手动安装JDK 的可以找找看)
- 设置环境变量:
sudo vim ~/.bashrc
在bashrc后面添加:
#Java properties
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_51
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export PATH=${JAVA_HOME}/bin:$PATH
最后使其生效:
source ~/.bashrc
- 设置系统默认的JDK:
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_51 /bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0_51 /bin/javac 300
sudo update-alternatives --config java
终端会出现系统已安装的JDK 以及编号,输入编号选择即可。(若是只有一个版本就不用选择了)
- 检查是否安装成功:
java -version
若出现类似以下字样,则成功:
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build1.7.0_51-b13)
Java HotSpot(TM) Server VM (build24.51-b03, mixed mode)
SSH无密码登录
-
安装openssh-server:
yum install openssh-server
- 实现无密码登录:
ssh-keygen -t dsa -P ''
回车后输入保存key 的文件,会在文件下生成两个文件:id_dsa 和 id_dsa.pub。这两个是成对出现,类似钥匙和锁。
然后可以将生成的 id_dsa.pub 里的内容加到用于认证的公钥文件中,转到刚才存放key 的目录下,输入命令:cat id_dsa.pub >> authorized_keys
- 验证是否成功:输入ssh localhost。不用输入密码,并且最后显示Last login 则成功。首次登录,可能会不一样。
安装hadoop2.2
- 下载hadoop2.2.0
- 转到下载目录,解压缩tar 文件:tar -xsvf hadoop2.2.0.tar.gz,并将解压后的文件夹改名为hadoop,移动到/home/用户名/cloud/下
- 设置环境变量
vim ~/.bashrc
#Hadoop variables
exportHADOOP_DEV_HOME=/home/cancy/cloud/hadoop
#根据自己的hadoop 目录自行修改
export PATH=$PATH:${HADOOP_DEV_HOME}/bin
export PATH=$PATH:${HADOOP_DEV_HOME}/sbin
exportHADOOP_MAPRED_HOME=${HADOOP_DEV_HOME}
export HADOOP_COMMON_HOME=${HADOOP_DEV_HOME}
export HADOOP_HDFS_HOME=${HADOOP_DEV_HOME}
export HADOOP_YARN_HOME=${HADOOP_DEV_HOME}
exportHADOOP_CONF_DIR=${HADOOP_DEV_HOME}/etc/hadoop
保存退出,并且输入source~/.bashrc 使改动生效
- 编辑hadoop-env.sh
cd 到hadoop 的安装目录,本配置中即/home/cancy/cloud/hadoop
vim etc/hadoop/hadoop-env.sh
在里面找到JAVA_HOME,并将它的值设置为你电脑jdk所在的绝对路径
# The java implementation to use.
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_51
- 验证环境变量是否配置正确:hadoopversion。出现hadoop版本即正确。
- 配置core-site.xml(由此开始需要编辑的文件都在etc/hadoop 下,另外所有存储的目录,都需要事先建好,或者存在)
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/cancy/cloud/hadoop_space/tmp</value>
</property>
</configuration>
- 编辑yarn-site.xml
<configuration>
<!-- Site specific YARN configurationproperties -->
<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.nodemanager.resource.memory-mb</name>
<value>10240</value>
<description>the amount ofmemory on the NodeManager in GB</description>
</property>
</configuration>
- 配置mapred-site.xml(在etc/hadoop 下本来只有mapred-site.xml.template,可以用cp 命令复制一份命名为mapred-site.xml)
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.cluster.temp.dir</name>
<value>file:/home/cancy/cloud/hadoop_space/mapred/temp</value>
<description>The temp dirfor map reduce</description>
<final>true</final>
</property>
<property>
<name>mapreduce.cluster.local.dir</name>
<value>file:/home/cancy/cloud/hadoop_space/mapred/local</value>
<description>The local dirfor map reduce</description>
<final>true</final>
</property>
</configuration>
- 配置hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/cancy/cloud/hadoop_space/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/cancy/cloud/hadoop_space/dfs/data</value>
</property>
</configuration>
- 格式化HDFS:hdfs namenode –format。会出现很多很多东西。。。
- 启动一下你的Hadoop:
sbin/start-dfs.sh
sbin/start-yarn.sh
- 查看是否安装好了Hadoop:在hadoop安装目录下,输入jps,如果出现NameNode、SecondaryNameNode、NodeManager、ResourceManager、DataNode 这五个进程,那就恭喜你了,你的Hadoop已经安装好了!
- 关闭hadoop 各个服务:
sbin/stop-dfs.sh
sbin/stop-yarn.sh
给格式跪了!