hadoop完整安装

1    安装环境

Linux(RHEL6.4) hadoop(hadoop-2.6.5) JDK(jdk-8u121-linux-x64)

服务器IP

服务器主机名

192.168.0.120

Master

192.168.0.121

Slave1

192.168.0.122

Slave2

192.168.0.123

Slave3

2    服务器准备

2.1     修改服务器主机名

[root@master ~]# vi /etc/sysconfig/network

                       

其他主机

2.2     SSH无密登录

[root@master ~]# ssh-keygen -t rsa

 刚才都作甚了呢?主要是设置ssh的密钥和密钥的存放路径。 路径为~/.ssh下。

    打开~/.ssh 下面有三个文件

    authorized_keys,已认证的keys

    id_rsa,私钥

    id_rsa.pub,公钥   三个文件。

    下面就是关键的地方了,(我们要做ssh认证。进行下面操作前,可以先搜关于认证和加密区别以及各自的过程。)

①在master上将公钥放到authorized_keys里。命令:

 cat id_rsa.pub >> authorized_keys

    ②将master上的authorized_keys放到其他linux的root/.ssh目录下。

       命令: scp authorized_keys slave1:root/.ssh       

               sudo scp authorized_keys 远程主机用户名@远程主机名或ip:存放路径。

    ④测试是否成功

       ssh slave1输入用户名密码,然后退出,再次ssh host2不用密码,直接进入系统。这就表示成功了。

2.3     修改主机名映射

[root@master ~]# vi /etc/hosts

127.0.0.1 localhost

192.168.0.120 master

192.168.0.121 slave1

192.168.0.122 slave2

192.168.0.123 slave3

拷贝到其他主机

[root@master src]# scp /etc/hosts slave1:/etc/hosts

2.4     关闭防火墙

所有机器运行

[root@master src]# service iptables stop

[root@master src]# chkconfig iptables off

2.5     重启所有电脑

[root@master src]# shutdown -r now

3    上传jdk,hadoop并配置环境变量。

3.1     文件上传

通过xftp将文件上传到linux中。将文件放到/usr/local/src中,四个linux都要操作。

3.2     解压缩:

[root@master src]#  tar -zxvf jdk-8u121-linux-x64.tar.gz

[root@master src]# tar -zxvf hadoop-2.6.5.tar.gz

安装到/usr/local/java  /usr/local/hadoop目录中

[root@master src]# mv jdk1.8.0_121/ /usr/local/java

[root@master src]# mv hadoop-2.6.5 /usr/local/hadoop

3.3     设置环境变量

[root@master src]# vi temp

添加:

export JAVA_HOME=/usr/local/java

export HADOOP_HOME=/usr/local/hadoop

export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

[root@master src]# cat temp >> /etc/profile

[root@master src]# source /etc/profile

    [root@master src]# scp temp slave1:/usr/local/src

[root@master src]# scp temp slave2:/usr/local/src

[root@master src]# scp temp slave3:/usr/local/src

3.4     每台从机运行

[root@slave1 src]# cat temp >> /etc/profile

[root@slave1 src]# source /etc/profile

4    修改hadoop配置文件

hadoop配置过程:要实现分布式环境,配置过程是最为重要的,

这里要涉及到的配置文件有7个:

/usr/local/hadoop/etc/hadoop/hadoop-env.sh

/usr/local/hadoop/etc/hadoop/yarn-env.sh

/usr/local/hadoop/etc/hadoop/slaves

/usr/local/hadoop/etc/hadoop/core-site.xml

/usr/local/hadoop/etc/hadoop/hdfs-site.xml

/usr/local/hadoop/etc/hadoop/mapred-site.xml

/usr/local/hadoop/etc/hadoop/yarn-site.xml

之后会分别介绍各个配置的的作用和配置关键

4.1     配置文件1:hadoop-env.sh

该文件是hadoop运行基本环境的配置,需要修改的为java虚拟机的位置。

故在该文件中修改JAVA_HOME值为本机安装位置(如,export JAVA_HOME=/usr/local/java)

[root@master hadoop]# vi hadoop-env.sh

4.2     配置文件2:yarn-env.sh

该文件是yarn框架运行环境的配置,同样需要修改java虚拟机的位置。

在该文件中修改JAVA_HOME值为本机安装位置(如,export JAVA_HOME=/usr/local/java)

[root@master hadoop]# vi yarn-env.sh

4.3     配置文件3:slaves

该文件里面保存所有slave节点的信息,以本篇为例

写入以下内容(hosts里从机的主机名):

Slave1

Slave2

Slave3

4.4     配置文件4:core-site.xml

<configuration>

<property>

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

<value>/home/hadoop/tmp</value>

</property>

<property>

<name>fs.default.name</name>

<value>hdfs://Master:9000</value>

</property>

</configuration>

这个是hadoop的核心配置文件,这里需要配置的就这两个属性,fs.default.name配置了hadoop的HDFS系统的命名,位置为主机的9000端口;hadoop.tmp.dir配置了hadoop的tmp目录的根位置。这里使用了一个文件系统中没有的位置,所以要先用mkdir命令新建一下。

4.5     配置文件5:hdfs-site.xml

<configuration>

<property>

<name>dfs.http.address</name>

<value>Master:50070</value>

</property>

<property>

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

<value>Master:50090</value>

</property>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

</configuration>

这个是hdfs的配置文件,dfs.http.address配置了hdfs的http的访问位置;dfs.replication配置了文件块的副本数,一般不大于从机的个数。

4.6     配置文件6:mapred-site.xml

<configuration>

<property>

<name>mapred.job.tracker</name>

<value>Master:9001</value>

 </property>

<property>

<name>mapred.map.tasks</name>

<value>20</value>

</property>

<property>

<name>mapred.reduce.tasks</name>

<value>4</value>

</property>

<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>

这个是mapreduce任务的配置,由于hadoop2.x使用了yarn框架,所以要实现分布式部署,必须在mapreduce.framework.name属性下配置为yarn。mapred.map.tasks和mapred.reduce.tasks分别为map和reduce的任务数,至于什么是map和reduce,可参考其它资料进行了解。

其它属性为一些进程的端口配置,均配在主机下。

4.7     配置文件7:yarn-site.xml

<configuration>

<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.webapp.address</name>

 <value>Master:8088</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.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>

</configuration>

该文件为yarn框架的配置,主要是一些任务的启动位置

4.8     将配置好的hadoop复制到其他节点

[root@master etc]# scp -r hadoop/ slave1:/usr/local/hadoop/etc/

[root@master etc]# scp -r hadoop/ slave2:/usr/local/hadoop/etc/

[root@master etc]# scp -r hadoop/ slave3:/usr/local/hadoop/etc/

5    启动hdfs

[root@master etc]# start-dfs.sh

Master上的进程

Datanode上的线程

6    启动yarn

[root@master etc]# start-yarn.sh

此时在Master上面运行的进程有:namenode secondarynamenode resourcemanager

Slave1,Slave2,slave3上面运行的进程有:datanode nodemanager

7    检查启动结果

查看集群状态:./bin/hdfs dfsadmin –report

查看文件块组成: ./bin/hdfsfsck / -files -blocks

查看HDFS: http://192.168.0.120:50070(主机IP)

查看RM: http:// 192.168.0.120:8088(主机IP)

8    问题

8.1     通过hdfs api访问hadoop的权限问题

问题:

Exception“org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security.AccessControlException: Permission denied: user=bikun, access=WRITE, inode="/user":user:supergroup:drwxr-xr-x” !!

解决:

在配置文件“/usr/local/hadoop/etc/hadoop/hdfs-site.xml”中加入以下配置内容后,再重新启动hadoop。

<property>

<name>dfs.permissions</name>

<value>false</value>

</property> 

原文地址:https://www.cnblogs.com/heavenhome/p/6772890.html