您的位置:首页 > 运维架构 > Linux

Hadoop 2.x搭建详解 centos

2016-04-03 16:53 375 查看
本教程适合 虚拟机/实体机 的 centos6/7 hadoop 2.X 分布式搭建,以虚拟机centos6 为例搭建。

#虚拟机和实体机的系统安装就略过了,不过不过实体机还是虚拟机,内存要>2GB

#最好设置一个统一的用户用相相同的密码,这样配置起来方便,我这里创建了hadoop用户

1、网络配置

(1)要配置系统的ip为静态ip:

如果是实体机,通过路由器分配static ip 然后改配置

下面说虚拟机:

1)设置虚拟机网卡位NAT模式

2)查看NAT网段:可以通过 编辑>虚拟网络编辑器里面的NAT虚拟网卡查看所在网段(即子网ip,比如我的:192.168.33.0),或者ipconfig查看ip,比如192.168.33.156。说明网段位192.168.33.0,这样就可以分配静态ip了。

3)打开网络设置:里面默认有eth0,可以直接编辑(edit):设置网卡模式:manual ip:192.168.33.180 子网掩码:255.255.255.0 网关:192.168.33.2

用这种方式修改多台机器ip为:180,181,182; 180作为master 其他两个作为slave节点

4)修改hostname:/etc/sysconfig/network 把三台机器HOSTNAME分别改为master slave0 slave1

5)修改每台机器的hosts,hosts是为了对应host和ip的关系:vim /etc/hosts

改为:192.168.33.180 Master

192.168.33.181slave0

192.168.33.182slave1

2、设置多台机器ssh无密码连接(这里是打通特定用户的ssh连接,我要打通用户hadoop 的ssh连接,所以接下载的操作用的是hadoop用户)

1)linux默认不允许ssh无密码连接,修改配置(需要root权限)打开ssh无密码连接:vim /etc/ssh/sshd_config,找到下面两行,去掉前面的注释#

#RSAAuthentication yes

#PubkeyAuthentication yes

2)用hadoop账户运行ssh-keygen -t rsa,一直回车,生成公私钥

3)合并公钥到authorized_keys:cat ~/.ssh/id_rsa.pub>> ~/.ssh/authorized_keys

4)合并多台机器的公钥:

scp ~/.ssh/authorized_keyshadoop@slave0:~/.ssh/authorized_keys

然后合并slave0上的公钥,在slave0上执行(hadoop账户下):cat ~/.ssh/id_rsa.pub>> ~/.ssh/authorized_keys

然后把合并了两个公钥的authorized_keys拷贝到slave1,并合并公钥:

在slave0上:

scp ~/.ssh/authorized_keyshadoop@slave1:~/.ssh/authorized_keys

然后再slave1上:

cat ~/.ssh/id_rsa.pub>> ~/.ssh/authorized_keys

现在slave1上的authorized_keys已经合并了三台机器公钥了,把它拷贝到其他两台机器就可以了:

在slave1上:

scp ~/.ssh/authorized_keyshadoop@master:~/.ssh/authorized_keys

scp ~/.ssh/authorized_keyshadoop@slave0:~/.ssh/authorized_keys

然后可以互相ssh hadoop账户试试,让机器互相识别,或者用master连接其他两个,然后拷贝~/.ssh/know_hosts到其他两台也行。

#java和hadoop每台机器都要配置

3、jdk安装与配置:

1)下载jdk:http://www.oracle.com/technetwork/java/javase/downloads/

下载的是jdk-8u77-linux-x64.gz

/home下新建java文件夹,拷贝jdk-8u77-linux-x64.gz到java文件夹并解压:tar -zxvf jdk-8u77-linux-x64.gz

2)添加到环境变量:

vim /etc/profile 在文件最后添加:

export JAVA_HOME=/home/java/jdk1.8.0_77

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

export PATH=$PATH:$JAVA_HOME/bin

3)source /etc/profile ,使配置生效

4)java -version ,看是否配置成功

4、安装hadoop(可以用root用户来操作)

1)下载“hadoop-2.7.0.tar.gz”,放到/home/hadoop目录下

2)解压,输入命令,tar -xzvf hadoop-2.7.0.tar.gz

3)在/home/hadoop目录下创建数据存放的文件夹,tmp、dfs、dfs/data、dfs/name

4)更改配置文件,更改/home/hadoop/hadoop-2.7.0/etc/hadoop下的配置文件

core-site.xml:

<configuration>

<property>

<name>fs.defaultFS</name>

<value>hdfs://192.168.33.180:9000</value>

</property>

<property>

<name>hadoop.tmp.dir</name>

<value>file:/home/hadoop/tmp</value>

</property>

<property>

<name>io.file.buffer.size</name>

<value>131702</value>

</property>

</configuration>

在hadoop-env.sh里面修改JAVA_HOME:

export JAVA_HOME=/home/java/jdk1.8.0_77

hdfs-site.xml:

<configuration>

<property>

<name>dfs.namenode.name.dir</name>

<value>file:/home/hadoop/dfs/name</value>

</property>

<property>

<name>dfs.datanode.data.dir</name>

<value>file:/home/hadoop/dfs/data</value>

</property>

<property>

<name>dfs.replication</name>

<value>2</value>

</property>

<property>

<name>dfs.namenode.secondary.http-address</name>

<value>192.168.33.181:9001</value>

</property>

<property>

<name>dfs.namenode.secondary.http-address</name>

<value>192.168.33.182:9001</value>

</property>

<property>

<name>dfs.webhdfs.enabled</name>

<value>true</value>

</property>

</configuration>

mapred-site.xml:

<configuration>

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

<property>

<name>mapreduce.jobhistory.address</name>

<value>192.168.33.180:10020</value>

</property>

<property>

<name>mapreduce.jobhistory.webapp.address</name>

<value>192.168.33.180:19888</value>

</property>

</configuration>

更改yarn-env.sh里面的JAVA_HOME:

export JAVA_HOME=/home/java/jdk1.8.0_77

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.auxservices.mapreduce.shuffle.class</name>

<value>org.apache.hadoop.mapred.ShuffleHandler</value>

</property>

<property>

<name>yarn.resourcemanager.address</name>

<value>192.168.33.180:8032</value>

</property>

<property>

<name>yarn.resourcemanager.scheduler.address</name>

<value>192.168.33.180:8030</value>

</property>

<property>

<name>yarn.resourcemanager.resource-tracker.address</name>

<value>192.168.33.180:8031</value>

</property>

<property>

<name>yarn.resourcemanager.admin.address</name>

<value>192.168.33.180:8033</value>

</property>

<property>

<name>yarn.resourcemanager.webapp.address</name>

<value>192.168.33.180:8088</value>

</property>

<property>

<name>yarn.nodemanager.resource.memory-mb</name>

<value>2048</value>

</property>

</configuration>

#如果没有上述的xml文件的话,复制相应的template文件即可。

5)如果这些步骤是用root用户操作的,需要更改hadoop文件夹的所有者chown hadoop -R /home/hadoop/hadoop-2.7.0

6)更改本地库,这里不配置的话,会有警告:util.NativeCodeLoader: Unable to load native-hadoop library for your platform。

下载本地库

hadoop-native-64-2.7.0.tar
http://dl.bintray.com/sequenceiq/sequenceiq-bin/
更新本地库:

解压tar包后用里面的文件替换掉/home/hadoop/hadoop-2.7.0/lib/native里面的文件

5、关闭防火墙和selinux

1)chkconfig iptables off

2)vim /etc/selinux/config 更改SELINUX=enforcing为SELINUX=disabled

6、至此,hadoop安装完毕,接下来需要格式化hadoop文件:

1)将路径调整到hadoop-2.7.0:bin/hdfs namenode -format

2)sbin/start-all.sh

3)添加hadoop环境变量 vim /etc/profile 添加export PATH=/home/hadoop/hadoop-2.7.0/bin:$PATH

4)所有程序启动完毕后可以通过master:50070来查看集群状态

或者hadoop dfsadmin -report 查看状态

常见问题及解答:

1、util.NativeCodeLoader: Unable to load native-hadoop library for your platform

解决办法参考:4-6

2、safe mode is on

hadoop目录下 bin/hadoop dfsadmin -safemode leave 可以关闭safe mode

3、hadoop dfsadmin -report 查看不到叶子节点的信息:

重新格式化文件系统时,namenode产生的新的namespaceID与datanode所持有的namespaceID不一致造成的

在我们格式化namenode前,应首先删除dfs.data.dir所配置文件中的data,name文件夹下的所有内容,最好日志也删除了

其他问题可以参考:
http://www.bubuko.com/infodetail-1179879.html
附本博文参考链接:
http://www.open-open.com/lib/view/open1435761287778.html http://www.linuxidc.com/Linux/2015-11/124800.htm http://www.secdoctor.com/html/yyjs/31101.html http://blog.csdn.net/hadoop_/article/details/9269933
关于wordcount的例子的运行后期会补上
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: