Centos7中hadoop配置

Centos7hadoop配置

1.下载centos7安装教程:

http://jingyan.baidu.com/article/a3aad71aa180e7b1fa009676.html

(注意,到如下图这一步的时候,要注意,选择图形界面安装,并且勾选如图2两个选项,才会有自带的浏览器。)

 

 

 

2.修改主机名

2.1CentOS7以下的版本修改主机名的方法

CentOS7以下的系统(包括CentOS6~CentOS6.5),我们通过修改HOSTNAME的方式即可得到想要的效果。如下所示,localhost是当前主机名,将其修改成了cjh141304092

[root@localhost ~]# vim /etc/sysconfig/network

  1 # Created by anaconda

  2 NETWORKING_IPV6=no

  3 PEERNTP=no

  4 GATEWAY=115.29.207.247

  5 HOSTNAME=typecodes

[root@localhost ~]# hostname cjh141304092 

[root@cjh141304092 ~]#

 

2 .2CentOS7以及CentOS7.1版本修改主机名的方法

目前CentOS的最高版本是CentOS7.1,有较多CentOS6系列能使用的命令都不能使用或者做了有些改动。例如,在CentOS7或者CentOS7.1系统中,直接使用上面的方法修改主机名,最后都是没有效果的。它已经被简化为下面这条命令:

[root@localhost ~]# hostnamectl set-hostname cjh141304092

[root@cjh141304092 ~]#

此方法无需重启直接生效。如果没有,关掉终端然后在打开即可。

2.3域名映射

进入root模式,然后用命令:vi /etc/hosts修改域名映射地址。

如:192.168.0.53是主机cmasterip地址,那么就要在hosts文件中添加,格式为:

ip地址(空格隔开)主机名

192.168.0.53 cmster

然后保存并退出,注意,每台子节点的主机都要配置主节点的域名映射

3关闭防火墙

root权限下执行以下两条指令,关闭防火墙并阻止其开机启动。

systemctl stop firewalld.service#停止firewall

systemctl disable firewalld.service#禁止firewall开机启动

 

4.安装jdk

将之前下载好的jdk复制到虚拟机中的/home/hadoop/目录下,(也就是用户根目录下)

使用命令rpm ivh /home/joe/jdk-8u101-linux-x64.rpm解压安装

安装完成后使用javac命令测试jdk是否安装成功,如果出现了如下图提示,说明安装jdk成功。(jdk可以在windows下下载好后用u盘传入到虚拟机中,然后执行安装)

 

验证:

 

5.ssh免密登录

    

    exit                             # 退出刚才的 ssh localhost

    cd ~/.ssh/                        # 若没有该目录,请先执行一次ssh localhost

    ssh-keygen -t rsa                   # 会有提示,都按回车就可以

    cat ./id_rsa.pub >> ./authorized_keys   # 加入授权

ssh-keygen -t rsa生成注册码,然后根目录下就会产生一个.ssh文件,用ls -a命令可查看。

 

.ssh目录下生成的id_rsa.pub文件最追加生产到authorized_keys文件中。(此文件原来没有,执行命令后会自动生成,如下图)

 

验证是否可以免密登录:出现如下情况则表示成功

 

以上步骤只是允许本机免密登录。但是要从另外一台机器上登录的话,还需要将另外台机器的id_rsa.pub公钥发送到要登录的那台机器上。例如A机器要ssh免密登录B机器的话,就要将上述生成的A本机器的id_rsa.pub公钥,发送到B机器用户根目录下。

用命令:scp ~/.ssh/id_rsa.pub hadoop@192.168.0.53:~/

 

 

命令格式如下:

scp 要发送的文件路径 目的机用户名@目的主机名(或者主机ip地址):目的机存放路径

 

发送成功后会发现目的主机用户目录下就会出现相应文件,如下图。

 

然后用cat ~/id_rsa.pub >> ~/.ssh/authorized_keys命令将文件追加到authorized_keys文件的内容后面。文件内容如下:

 

authorized_keys内容变成这样表示成功了。

然后用同样的步骤,将B机器的id_rsa.pub公钥传到A机器上。如果有三台机器,要互相访问的话,那么三台机器两两要配置,然后每台机器都执行以下命令,修改authorized_keys权限,这很重要,如果出现奇怪的错误表示,权限问题。

 

chmod 700 ~/.ssh

公钥复制完成后,将目的每台机器的sshd_config文件做如下配置:

 

进入root权限才能修改:做如下修改:只需找到这三句话,然后将前面的#号去掉即可。然后保存退出。

 

然后用exit退出root用户,用普通用户重启ssh服务,尝试ssh localhost登录,没让输入密码即表示成功了:

 

在另外一台机器上尝试登录,无需密码直接登录则表示成功了。

 

6.解压hadoop并做配置

将下载好的 hadoop-3.0.0-alpha1.tar.gz,放到/home/hadoop目录下,然后用tar -zxvf hadoop-3.0.0-alpha1.tar.gz命令解压到当前目录下。(下载的时候注意不要下载成hadoop-3.0.0-alpha1.src.tar.gz这个是资源文件并不是我们要的配置文件压缩包)

下载链接:

http://112.5.240.8/1Q2W3E4R5T6Y7U8I9O0P1Z2X3C4V5B/mirrors.cnnic.cn/apache/hadoop/common/hadoop-3.0.0-alpha1/hadoop-3.0.0-alpha1.tar.gz

解压:

 

解压完成后出现如下目录

 

我们需要配置的文件如下:

 

6.1hadoop文件配置

这是配置的主节点,其余子节点的配置要和主节点配置一模一样,否则可能会出现主节点启动了所有子节点的datanode,但是在浏览器查看节点信息的时候只有主节点一个,其余节点启动了却看不到信息。所以只要把这些配置文件复制到每个子节点即可。

6.1.1.配置hadoop-env.sh

原来前面有#号,将#号注释去掉,可以通过图形界面编辑,也可以通过vi编辑器编辑。

 

6.1.2.配置core-site.xml文件

<configuration>

<property>

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

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

</property>

<property>

<name>fs.defaultFS</name>

<value>hdfs://cjh141304092:9000</value>

</property>

<property>

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

<value>hdfs://cjh141304092:9000</value>

</property>

<property>

  <name>hadoop.native.lib</name>

  <value>true</value>

  <description>Should native hadoop libraries, if present, be used.</description>

</property>

</configuration>

6.1.3.配置hdfs-site.xml文件

<configuration>

<property>

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

<value>cjh141304092:50070</value>

</property>

<property>

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

<value>cjh141304092:50090</value>

</property>

<property>

<name>dfs.replication</name>

<value>2</value>

</property>

<property>

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

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

</property>

<property>

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

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

</property>

</configuration>

6.1.4.配置mapred-site.xml

文件中没有mapred.xml文件,所以将mapred-site.xml.template重命名成mapred-site.xml

编辑etc/hadoop/mapred-site.xml

<configuration>

<property>

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

<value>cjh141304092:9001</value>

</property>

<property>

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

<value>yarn</value>

</property>

<property>

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

<value>cjh141304092:10020</value>

</property>

<property>

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

<value>cjh141304092:19888</value>

</property>

</configuration>

6.1.5.配置yarn-site.xml

<configuration>

<property>

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

<value>cjh141304092:8032</value>

</property>

<property>

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

<value>cjh141304092:8030</value>

</property>

<property>

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

<value>cjh141304092:8088</value>

</property>

<property>

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

<value>cjh141304092:8031</value>

</property>

<property>

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

<value>cjh141304092: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>

<property>

<name>yarn.resourcemanager.hostname</name>

<value>cjh141304092</value>

</property>

</configuration>

6.2配置hadoop环境变量

   

 etc/profile: 此文件为系统的每个用户设置环境信息。当用户登录时,该文件被执行一次,并从 /etc/profile.d 目录的配置文件中搜集shell 的设置。一般用于设置所有用户使用的全局变量。

    /etc/bashrc: bash shell 被打开时,该文件被读取。也就是说,每次新打开一个终端 shell,该文件就会被读取。

接着是与上述两个文件对应,但只对单个用户生效:

    ~/.bash_profile ~/.profile: 只对单个用户生效,当用户登录时该文件仅执行一次。用户可使用该文件添加自己使用的 shell 变量信息。另外在不同的LINUX操作系统下,这个文件可能是不同的,可能是 ~/.bash_profile~/.bash_login ~/.profile 其中的一种或几种,如果存在几种的话,那么执行的顺序便是:~/.bash_profile~/.bash_login~/.profile。比如 Ubuntu 系统一般是 ~/.profile 文件。

    ~/.bashrc: 只对单个用户生效,当登录以及每次打开新的 shell 时,该文件被读取。

此外,修改 /etc/environment 这个文件也能实现环境变量的设置。/etc/environment 设置的也是全局变量,从文件本身的作用上来说, /etc/environment 设置的是整个系统的环境,而/etc/profile是设置所有用户的环境。有几点需注意:

    系统先读取 etc/profile 再读取 /etc/environment(还是反过来?)

    /etc/environment 中不能包含命令,即直接通过 VAR="..." 的方式设置,不使用 export

    使用 source /etc/environment 可以使变量设置在当前窗口立即生效,需注销/重启之后,才能对每个新终端窗口都生效。

 

通过以下两条命令在系统中添加环境变量:其中HADOOP_HOME的路径为hadoop解压文件目录路径。

[root@cjh1413040 hadoop]# export HADOOP_HOME=/home/hadoop/hadoop-3.0.0-alpha1

[root@cjh1413040 hadoop]# export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

[root@cjh141304092 hadoop]# . /etc/profile #使环境变量立即生效。

操作如下图:

 

红框中的是验证hadoop是否安装成功,当出现如上信息的时候就是成功了。

注意:

以上两条环境变量的语句如果是以命令的形式执行的话,环境变量的有效期是有限的,当命令终端关闭之后,有效期结束,下次还得继续配置,为了永久有效,我们就要将其写入/etc/profile文件中和~/.bashrc文件中。如下图:

 

因为这个文件需要root权限才能更改所以我们切换到root模式去修改文件。

 

进入vi编辑界面,i开始输入,输入完成后按esc键,然后输入“:wq”保存并退出,输入的“:wq”在界面左下角。

 

当写入~/.bashrc的时候要在hadoop用户模式下,因为这个文件是只有用户才能读取的。每个用户独立

6.3hdfs格式化

通过命令:hdfs namenode -format

 

当出现如下successfully formatted表示格式化成功了

 

6.4启动start-dfs.sh

 

jps查看启动的任务如下:

 

6.5启动start-yarn.sh

 

 

start-yarn.sh又启动了两个任务节点,然后用jps查看

6.6浏览器验证

当成功启动以上的任务之后,就能打开如下网页了,

路径格式为:http://主机名:8080

 

这是第二个网页,端口号为50070

 

50070可以看到HDFS的相关信息,8088可以看到Yarn的相关信息。

至此。hadoop环境搭建完成。其余节点配置一样。

7.测试案例:wordcount

7.1创建数据源文件

我们在hadoop-2.6.0根目录下创建一个file文件,然后在文件中写入任意内容:我在此处新建了两个:

 

7.2将文件上传到hdfs.

首先创建input文件夹,

 

将刚才的两个mytest文件上传到input文件夹中,然后查看是否上传成功

 

要查看hdfs文件也可登录50070的网页查看:

 

 

7.3运行hadoop自带的example示例:

 

命令格式为:

hadoop jar 要执行的jar 要执行的函数 数据文件目录 输出结果目录

执行进度可以在8088页面查看:

 

查看统计结果:

 

8.windowslinux发送文件

PuTTY小巧方便。但若需要向网络中的Linux系统上传文件,则可以使用PuTTY官方提供的PSCP工具来实现上传。PSCP基于ssh协议实现,其用法与SCP命令非常类似。

下载pscp后运行:

 

也可以将他添加到环境变量中,

然后向linux服务器上传文件:

 

命令格式为:

pscp 本地文件路径 目的主机用户@目的主机ip或者主机名(有做域名映射的话主机名才有效) :要存放的目录

posted @ 2017-03-06 21:00  小Cai先森  阅读(1923)  评论(0编辑  收藏  举报