Hadoop-2.x 安装笔记

在之前的0.20.2版本因为硬盘坏道惨遭毒害之后,默默地决定安装Hadoop-2.X版本的。安装步骤并不是很繁琐但是杂七杂八的东西太多,所以留下记录以备不时之需

以一个熟练掌握JavaEE和初步了解Linux系统的程序员的视角……

P.S 所谓三位一体就是三台机器应该一同设置,或者操作的这个文件应该复制到3台机器上


一、Hadoop安装前的准备工作


1、Linux系统的安装


首先安装3台虚拟机,一台master,两台slave分别为slave1,slave2,操作系统为CentOS-6.5-x64位


目前阶段我直接使用vmvare的快捷安装,以图步骤快捷

顺带一提在网络设置里面,我是用的是NAT模式而不是各个视频、书里写到的网桥模式,目前来说,一切正常

Linux的hostname定义的名称并不是在这里,所以这里也可以瞎写,但是最好还是标识起来,例如我依旧定义了master,slave1,slave2等等…同时定义账号和密码

然后就是漫长的安装阶段,由于是快捷安装,时区,分区,语言等都是默认的。


2、Linux系统的基本配置


安装好了之后,也是需要各个配置的,首当其冲的……


1)安装JDK(三位一体)


在Oracle官网直接下载jdk7.x版本的即可,由于本机安装的是CentOS,所以选择了tar.gz的文件格式

链接 http://download.oracle.com/otn-pub/java/jdk/7u67-b01/jdk-7u67-linux-x64.tar.gz

在Linux下载好之后直接使用

tar -xvzf jdk-7u67-linux-x64.tar.gz //当然路径得对呀~
解压好了之后直接放进 /usr/jdk 目录里吃灰

mv jdk1.7.0_64 /usr/jdk
然后在root账号下配置 /etc/profile文件 (当然.bash_profile也可以,各有喜好)
加上这几句

export JAVA_HOME=/usr/jdk

export JAVA_BIN=/usr/jdk/bin

export PATH=$PATH:$JAVA_HOME/bin

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export JAVA_HOME JAVA_BIN PATH CLASSPATH
这时候 我们使用javac命令或者java -version命令就可以了~天才~


2)配置主机名(三位一体)


在命令中输入 hostname 就能查看当前主机的名字 默认是localhost.xxxxxxx

这当然不符合我们风格啦~全改之!

第一步 : 创建临时主机名

hostname master(其他的啥的)
第二步: 在root权限下 更改 /etc/sysconfig/network文件

NETWORKING=yes
HOSTNAME=master //你要的主机名
第三步 : 在hosts文件里面作威作福
// /etc/hosts路径下
127.0.0.1 localhost //这里加入master会在hdfs阶段出错,反正现在来看能用
192.168.8.100 master 
192.168.8.101 slave1 //顺带把之后的步骤给做了
192.168.8.102 slave2
之后也是ping来ping去的,看看好不好使。


3)配置ssh免密码(三位一体)


切记!退出root之后!在个人账号下使用以下命令

这一步一定要注意文件权限问题!!!痛!

ssh-keygen -t rsa
生成ssh密钥,这时候会问你路径和基准值啥的……不用管,直接回车回车过去

之后他会在你的 /home/你的帐号名/.ssh路径下生成两个文件


一个是公钥,一个是私钥。

把id_rsa.pub内的内容复制下来(三台机器上都要),然后创建并粘贴到一个叫做 authorized_keys的文件下。


就是乱糟糟的这么一堆,然后放到.ssh目录下即可

接着输入ssh命令,连接各个主机,包括自己的。看看能不能免密码喽~


二、Hadoop的安装


目前为止,在Hadoop-2.5.0版本中,我们需要配置的文件有7个,这里有些文件是需要另外创建的


hadoop-2.5.0/etc/hadoop/hadoop-env.sh
hadoop-2.5.0/etc/hadoop/yarn-env.sh
hadoop-2.5.0/etc/hadoop/slaves
hadoop-2.5.0/etc/hadoop/core-site.xml
hadoop-2.5.0/etc/hadoop/hdfs-site.xml
hadoop-2.5.0/etc/hadoop/mapred-site.xml //另外创建
hadoop-2.5.0/etc/hadoop/yarn-site.xml


1、各个文件的配置(三位一体)


1)hadoop-env.sh


他的配置很简单,只需要在茫茫人海中找到这一行就行了

# The java implementation to use.
export JAVA_HOME=/usr/jdk //就是它


2)yarn-env.sh


同上,我们需要在茫茫人海中找到这一行

# resolve links - $0 may be a softlink
export YARN_CONF_DIR="${YARN_CONF_DIR:-$HADOOP_YARN_HOME/conf}"

# some Java parameters
export JAVA_HOME=/usr/jdk //就是它
进行这两部的时候,一定要确保java已经配置完成


3)slaves


这个文件里面啥也没有,只要把slave们的主机名写上就好了

之后是xml的配置,在这里面多数都有一个<configuration>标签对,在这里写数据


4)core-site.xml


<configuration>
<property> 定义默认节点
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value> 这里接主机名和端口9000
</property>
<property> 缓存大小
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property> 设定tmp路径,<strong>重要!</strong>
<name>hadoop.tmp.dir</name>
<value>file:/home/hope6537/hadoop-2.5.0/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>hadoop.proxyuser.hduser.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hduser.groups</name>
<value>*</value>
</property>
</configuration>


5)hdfs-site.xml

<configuration>
<property> 
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value> 主机名+端口
</property>
<property> 定义节点路径
<name>dfs.namenode.name.dir</name>
<value>file:/home/hope6537/hadoop-2.5.0/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hope6537/hadoop-2.5.0/data</value>
</property>
<property> 这里是副本复制数 1或者2就好了
<name>dfs.replication</name>
<value>2</value>
</property>
<property> 打开网页端
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>


6)mapred-site.xml 需要自己创建


<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>


7) yarn-site.xml


<configuration>

<!-- Site specific YARN configuration properties -->
<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.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>

</configuration>


至此,配置大功告成~!天才!


2、Hadoop的部署(Master Only)


改完配置文件之后我们就可以进行测试了~所谓的部署嘛~就是放在一个你感觉好用的地方。

注意要把设置好的Hadoop文件分发给Slave机器中啊~!

我们需要先格式化hdfs文件系统

在hadoop目录下使用如下命令

bin/hdfs namenode –format 
从输出中可以看到格式化成功的信息。

之后激动人心的一刻来了~在目录下输入如下命令

sbin/start-all.sh



就这样~我们启动成功了~开始了hadoop的星辰大海般的旅程~

怎么可能就这么顺利呀!拍飞!

之前说了吧~咱家的Linux是64位的(我想问问哪台服务器是32位),这样就会有个问题。

在运行的时候会出现一个警告

<span style="font-family:Microsoft YaHei;">WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable</span>
这个警告说的是啥呢?就是说本地库无法加载,因为它丫的是32位的!艹,32位的。

所以我们需要进行苦逼的本地重新编译,以适应32位环境。


三、Hadoop的本地库重新编译(Master Only)


打死你!我打死你!打死你个小(哔——)”——某乡村杀马特重金属歌唱家 
浓郁的唱出了我的心情

1、下载和编译有关的包


为了进行重新编译的活动,我们需要下载安装几个附属文件。

在网络通畅的环境下~输入以下的命令

yum install svn
yum install autoconfautomake libtool cmake
yum install ncurses-devel
yum install openssl-devel
yum install gcc*
安装时间大概持续半小时,只要不停的yes就好了~


2、安装Maven


目前来说 Maven的稳定版本的是3.2.3


所以我们直接下载和安装就可以了


wget http://apache.fayea.com/apache-mirror/maven/maven-3/3.2.3/binaries/apache-maven-3.2.3-bin.tar.gz


然后解压缩


tar xzvf./apache-maven-3.2.3-bin.tar.gz


之后把它移动到/usr/local中去(建议)


mv./ apache-maven-3.2.3 /usr/local


并配置环境变量,在profile里面(公共的也行,私有的也可以)的PATH里面添加


:/usr/local/apache-maven-3.2.3/bin //别忘了冒号口牙~


之后使用set命令查看环境变量




然后输入mvn -version看看是否配置好了




接下来是配置它的更新库,由于Maven的外国服务器貌似被墙了,于是添加了开源中国的Maven下载镜像


</mirror>
   
    <mirror>
      <id>mirrorId</id>
      <mirrorOf>repositoryId</mirrorOf>
      <name>Human Readable Name for this Mirror.</name>
      <url>http://my.repository.com/repo/path</url>
    </mirror>
     
  </mirrors>
  
  <profiles>
	<profile>
		<id>jdk-1.4</id>
		<activation>
			<jdk>1.4</jdk>
		</activation>
		<repositories>
			<repository>
				<id>nexus</id>
				<name>local private nexus</name>
				<url>http://maven.oschina.net/content/groups/public/</url>
				<releases>
					<enabled>true</enabled>
				</releases>
				<snapshots>
					<enabled>false</enabled>
				</snapshots>
			</repository>
		</repositories>
		<pluginRepositories>
			<pluginRepository>
				<id>nexus</id>
				<name>local private nexus</name>
				<url>http://maven.oschina.net/content/groups/public/</url>
				<releases>
					<enabled>true</enabled>
				</releases>
				<snapshots>
					<enabled>false</enabled>
				</snapshots>
			</pluginRepository>
		</pluginRepositories>
	</profile>
</profiles>
哦也~干的漂亮~


3、下载并安装protobuf


由于谷歌被墙了,所以很明显我们没法直接wget了

所以我下了一个CSDN资源提供的

http://download.csdn.net/detail/px_dn/7414673

接着解压缩,并进入文件夹目录 运行如下安装命令

./configure
make
make check
make install

在这里要注意权限问题,不然很有可能安装失败 万能解决方式是直接root chmod 777


4、重新编译Hadoop


通过svn获取hadoop源代码

svn checkout http://svn.apache.org/repos/asf/hadoop/common/tags/release-2.5.0 //注意版本号

进入release-2.5.0目录输入如下命令

mvnpackage -Pdist,native -DskipTests -Dtar
然后开始漫长的编译过程吧~

编译的时候要下载很多的文件包,所以注意网络畅通,同时Maven镜像有效。

直到出现Bulid Success字样,就大功告成了~!

5、覆盖本地库(三位一体)


将/release-2.5.0/hadoop-dist/target/hadoop-2.5.0/lib 里面的编译包覆盖到你的hadoop安装位置里的lib文件夹即可~!

and enjoy!


附 hadoop-2.5.0 64为本地库地址:http://pan.baidu.com/s/1hq1ibD6


P.S. 接着学习Hadoop2.x的新特性去~

P.S.S 实际上Hadoop1.x也没咋学精

P.S.S.S 妹的应该先把Linux弄明白呀~!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值