Hadoop学习(2)——虚拟机安装

来源:互联网 发布:服务器硬件检测软件 编辑:程序博客网 时间:2024/04/29 17:42

为了做实验,自己在自己的电脑上安装了虚拟机来尝试玩一下Hadoop,安装Hadoop,熟悉Hadoop的运行方式。


提前准备


安装环境:

Windows 7 Enterprise 64 bit

Memory: 8G

Process: i7-3770 3.4GHz

Software: VMware Workstation


虚拟机系统:

Ubuntu 10.04 64bit

Hadoop 2.6.0 

JDK 1.8.0



hadoop安装


1. 安装虚拟机,64位的Ubuntu 10.04,分别命名为

NameNode: compute-n 

DataNode:  compute-0-1, compute-0-2, compute-0-3, compute-0-4

user: hadoop

password:123

2. 进入系统,安装SSH,方便传输文件

2.1 首先安装SSH,命令 sudo apt-get install openssh-server


3. 更改各个VM的名称

/etc/hostname
更改机器的名称,方便SSH的时候好沟通

NameNode: compute-n 

DataNode:  compute-0-1, compute-0-2, compute-0-3, compute-0-4


/etc/hosts

将整个cluster所有的机器和对应的IP加入进来,这样的话 ,机器就知道了其他机器在系统中的位置

127.0.0.1       localhost.localdomainlocalhost192.168.31.128 compute-0-1.local compute-0-1192.168.31.129 compute-0-2.local compute-0-2192.168.31.130 compute-0-3.local compute-0-3192.168.31.131 compute-0-4.local compute-0-4192.168.31.133 compute-n.local compute-n


安装sshd

sudo apt-get install openssh-server

使用以下命令进行检测

ssh localhost


修改一个节点后,可以通过scp命令直接拷贝到其他的电脑

sudo scp /etc/hosts hadoop@192.168.31.128:/home/hadoop/Downloads


4. 修改SSH,互相之间可以相互建立信任的通信


4.1 首先在每台机器上运行,以后命令,生成每台电脑的公钥

ssh-keygen -t rsa cd ~/.ssh 

会有id_rsa, id_rsa.pub 两个文件

4.2 将所有节点上的id_rsa.pub 拷贝到compute-n节点上

scp compute-0-1:~/.ssh/id_rsa.pub compute-0-1scp compute-0-2:~/.ssh/id_rsa.pub compute-0-2scp compute-0-3:~/.ssh/id_rsa.pub compute-0-3scp compute-0-4:~/.ssh/id_rsa.pub compute-0-4

4.3 将所有的密钥放入到authorized_keys文件中

cat compute-0-1 compute-0-2 compute-0-3 compute-0-4 id_rsa.pub >> authorized_keys

4.4 之后将anthorized_keys拷贝到其他的所有的节点上

scp authorized_keys compute-0-1:/home/hadoop/.ssh/scp authorized_keys compute-0-2:/home/hadoop/.ssh/scp authorized_keys compute-0-3:/home/hadoop/.ssh/scp authorized_keys compute-0-4:/home/hadoop/.ssh/

4.5 检验之间是否可以互相信任的通信

ssh compute-0-1ssh compute-0-2

5. 安装JDK,这是运行环境,必须的

5.1 下载JDK,对应为64bit, 现在已经JDK1.8.0

解压:

tar xvf jdk-8u25-linux-x64.tar.gz

5.2 移动到/usr/java

mv  jdk1.8.0_40 /usr/java/

5.4 修改配置文件/etc/profile,进行环境配置,将以下内容加入到文件最后

JAVA_HOME=/usr/java/jdk1.7.0_75CLASSPATH=.:$JAVA_HOME/lib.tools.jarPATH=$JAVA_HOME/bin:$PATHexport JAVA_HOME CLASSPATH PATH 


5.5 检验java是否安装成功
java -version


6. 安装hadoop,配置开发环境

6.1 下载Hadoop安装包,解压安装包

tar -zxvf hadoop-2.6.0.tar.gz

将安装包放入到/home/hadoop目录下

mv hadoop-2.6.0 /home/hadoop

6.2 修改配置文件

6.2.1 masters

compute-n

6.2.2 slaves

compute-0-1compute-0-2compute-0-3compute-0-4

6.2.3 hdfs-site.xml

<configuration>        <property><name>dfs.replication</name><value>2</value></property>        <property><name>dfs.nameservices</name><value>compute-n</value></property>        <property><name>dfs.namenode.name.dir</name><value>file:///home/hadoop/hadoopdata/dfs/name</value></property>        <property><name>dfs.data.dir</name><value>file:///home/hadoop/hadoopdata/dfs/data</value></property>        <property><name>dfs.http.address</name><value>compute-n:50085</value></property></configuration>

配置namenode和data的目录 /home/hadoop/hadoopdata/dfs/name 和 /home/hadoop/hadoopdata/dfs/data


6.2.4 core-site.xml

<configuration><property><name>fs.defaultFS</name><value>hdfs://compute-n:8025</value></property><property><name>hadoop.tmp.dir</name><value>/home/hadoop/hadoopdata/tmp</value></property><property><name>hadoop.native.lib</name><value>true</value></property></configuration>


配置tmp的位置/home/hadoop/hadoopdata/tmp,每个节点新建此文件夹
6.2.5 mapred-site.xml

<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property> <!--        <property>                <name>mapred.child.java.opts</name>                <value>-Xmx2048m</value>        </property>        -->        <property>                <name>mapreduce.map.memory.mb</name>                <value>128</value>        </property>        <property>                <name>mapreduce.reduce.memory.mb</name>                <value>128</value>        </property>        <property>                <name>mapred.reduce.slowstart.completed.maps</name>                <value>0.75</value>        </property>        <property><name>mapreduce.reduce.cpu.vcores</name><value>1</value></property>        <property>                <name>mapreduce.map.java.opts></name>                <value>-Xmx100m</value>        </property>        <property>                <name>mapreduce.reduce.java.opts</name>                <value>-Xmx100m</value>        </property><property> <name>mapreduce.jobhistory.address</name> <value>compute-n:10020</value></property><property> <name>mapreduce.jobhistory.webapp.address</name> <value>compute-n:19888</value></property></configuration>

6.2.6 yarn-site.xml

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration>  <property>    <name>yarn.nodemanager.aux-services</name>    <value>mapreduce_shuffle</value>  </property> <property>    <name>yarn.resourcemanager.hostname</name>    <value>compute-n</value>  </property>  <property>    <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>    <value>org.apache.hadoop.mapred.ShuffleHandler</value>  </property>  <property>    <name>yarn.log-aggregation-enable</name>    <value>true</value>  </property><property>    <name>yarn.nodemanager.resource.memory-mb</name>    <value>512</value>  </property><property><name>yarn.scheduler.minimum-allocation-mb</name><value>300</value></property> <property><name>yarn.nodemanager.pmem-check-enabled</name><value>false</value> </property><!-- <property><name>yarn.nodemanager.vmem-check-enabled</name><value>false</value> </property>--> <property>    <name>yarn.scheduler.maximum-allocation-mb</name>   <value>450</value>   </property>    <property>        <name>yarn.scheduler.maximum-allocation-vcores</name>        <value>1</value>    </property><property><name>yarn.nodemanager.log-dirs</name><value>file:///home/hadoop/hadoopdata/yarn/logs</value></property><property><name>yarn.nodemanager.local-dirs</name><value>file:///home/hadoop/hadoopdata/yarn/data</value></property></configuration>


配置nodemanager的log和本地目录,分别为 /home/hadoop/hadoopdata/yarn/logs 和 /home/hadoop/hadoopdata/yarn/data


6.2.7 hadoop-env.sh

添加如下内容,指定配置文件的位置

export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-"/home/hadoop/hadoop-2.6.0/etc/hadoop"}


如果运行的时候提醒找不到JDK的话,添加如下

export JAVA_HOME=/usr/java/jdk1.8.0_40

6.3 将hadoop-2.6.0 文件夹拷贝到其他所有的节点

sudo scp -r /home/hadoop/hadoop-2.6.0 hadoop@compute-0-1:/home/hadoop sudo scp -r /home/hadoop/hadoop-2.6.0 hadoop@compute-0-2:/home/hadoop sudo scp -r /home/hadoop/hadoop-2.6.0 hadoop@compute-0-3:/home/hadoop sudo scp -r /home/hadoop/hadoop-2.6.0 hadoop@compute-0-4:/home/hadoop 


7. 启动hadoop

7.1 当hadoop安装完成之后,进入/home/hadoop/hadoop-2.6.0/sbin, 用start-all.sh启动所有的作业,首先启动namenode 和 datanode ,之后启动 ResourceManager 和 nodeManager

之后启动historyServer

mr-jobhistory-daemon.sh start historyserver


7.2 检测是否启动

在namenode使用命令jps,查看有哪些启动

NameNodeResourceManagerJps


在datanode使用命令jps,查看有哪些启动

DataNodeNodeManagerJps

8. 在HDFS中为用户新建账目

hadoop fs -mkdir -p /user/[current login user]

如果没有这段话的话,hadoop fs -ls 是无法使用的,会提醒"No such file or directory"


之后就可以享受hadoop框架了,开始好好的做实验,如果是初学,最好是弄个WordCount,这就和刚学JAVA,编写一个HelloWorld 一样


参考

1. 在Linux系统下安装hadoop-2.6集群环境

2. YARN加载本地库抛出Unable to load native-hadoop library解决办法


感受:

安装这个cluster 我用了不到半天的时间,但是为了结果一个我看起来是个bug的东西,我鼓捣了两天,但是仅仅是个WARN

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

当时我使用 hadoop fs -ls 这个命令的时候,发现无法使用,所以主观的认定现在这个WARN的问题,导致我无法使用HDFS,所以去想办法结果这个问题,但是现在我才发现,这个WARN和我无法使用这个命令没有半毛钱关系,我浪费了好多的时间,我现在知道为什么高级技工收费那么高了,熟练真的是一种技能

当时解决问题的方式:

首先查找这个WARN是怎么回事,原因是版本不一致,在 /lib/native 中的文件是64bit,而当时我的系统是32bit ubuntu 10.04,

2. 版本不一致,那就重新编译hadoop 2.6.0 ,下载hadoop的src文件,之后编译,编译需要安装mvn,还有一堆其他的软件

3. 开始安装mvn,是用的系统提示,结果安装了mvn2,在hadoop-src文件目下mvn的时候,发现无法mvn,提示需要mvn 3.0以上版本,而当时我只是mvn 2.0

4. 换mvn版本,先卸载原来的mvn2,要不然命令行输入mvn,使用的命令一直是mvn 2,安装完成后,将mvn 3.0 安装路径写入到 path中,OK,现在mvn安装好了,之后下一步想mvn hadoop-src,结果还是有问题,经过查找,发现是安装的一堆软件中,有一个版本有问题,当这个时候,火了,直接放弃了

5. 既然这么多的版本有问题,那么我直接安装一个64bit 的系统不就好了,就不用那么麻烦了,所有就去安装最新的Ubuntu 14.10 开始分配的内存是1G,五台机器,结果发现整个不行了,我现在的系统是Win 7 64bit, 内存是8G,被虚拟机分去5G,整个电脑卡成狗了,虚拟机里面基本上也没有反应速度,直接换成低版本 10.04 的64位版本,每台电脑512M内存,运行速度依旧不错

6. 之后按照正常的流程安装Hadoop之后,还是有那个WARN,我火就大了,真心的,我鼓捣了整整一天了,还出现这个问题,让我火受不了了,接下来我又通过关键字 "No such file or directory" 知道根本就仅仅是个WARN,没有其他的问题,当用 hadoop fs -mkdir /user/hadoop  之后,一切正常了。写下这段文字,让我自己感受一下

7. 打开原来的虚拟机,32位的虚拟机,发现32位虚拟机有这个问题,但是HDFS是可用的,我当时发现HDFS不能用的时候,首先想到的居然是WARN造成的,没有找到真正的问题,之后的所有的努力都是无用功

8. 当出现问题的时候,方向错了,真的比任何时候都严重,不仅仅是浪费了时间,精力,同时在解决问题中,不知道何时停下来才是合适的,我这次停下来的时候,真的是有点晚,耽误了整整一天的时间


0 0
原创粉丝点击