Hadoop集群配置

来源:互联网 发布:内蒙古大数据局局长 编辑:程序博客网 时间:2024/06/05 19:35

本文为笔者安装配置过程中详细记录的笔记

1. 下载hadoop

hadoop-2.7.1.tar.gz

hadoop-2.7.1-src.tar.gz  64linux需要重新编译本地库

2. 准备环境

Centos6.4 64位,3

hadoop0  192.168.1.151               namenode

hadoop1  192.168.1.152               datanode1

Hadoop2  192.168.1.153               datanode2

1)安装虚拟机:

vmware WorkStation 10,创建三台虚拟机,创建时,直接建立用户ha,密码111111.同时为root密码。网卡使用桥接方式。

安装盘

 、

2). 配置IP. 创建完成后,设置IP,可以直接进入桌面,在如下菜单下配置IP,配置好后,PING确认好用。

 

3)更改三台机器主机名

切换到root用户,更改主机名。

[ha@hadoop0 ~]$ su - root

Password:

[root@hadoop0 ~]# hostname hadoop0

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

NETWORKING=yes

HOSTNAME=hadoop0

以上两步后重启服务器。三台机器都需要修改。

4)创建hadoop用户

由于在创建虚拟机时,已自动创建,可以省略。否则用命令创建。

 

 

 

5)修改hosts文件

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

 

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.1.151  hadoop0

192.168.1.152  hadoop1

192.168.1.153  hadoop2

    此步骤需要三台机器都修改。

3. 建立三台机器间,无密码SSH登录。

1)三台机器生成密钥,使用hadoop用户操作

[root@hadoop0 ~]# su – ha

[ha@hadoop0 ~]$ ssh -keygen -t rsa

所有选项直接回车,完成。

以上步骤三台机器上都做。

 

2)在namenode机器上,导入公钥到本机认证文件

[ha@hadoop0 ~]$ cat ~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys

 

3)将hadoop1和hadoop2打开/home/ha/.ssh/ id_rsa.pub文件中的内容都拷贝到hadoop0/home/ha /.ssh/authorized_keys文件中。如下:

http://blog.csdn.net/jihuanliang/article/details/48119419

 

 

 

 

4)将namenode上的/home/ha /.ssh/authorized_keys文件拷贝到hadoop1和hadoop2的/home/ha/.ssh文件夹下。同时在三台机器上将authorized_keys授予600权限。

[ha@hadoop1 .ssh]$ chmod 600 authorized_keys

5)验证任意两台机器是否可以无密码登录,如下状态说明成功,第一次访问时需要输入密码。此后即不再需要。

[ha@hadoop0 ~]$ ssh hadoop1

Last login: Tue Aug 11 00:58:10 2015 from hadoop2

 

4. 安装JDK1.7

1)下载JDK3264位),解压

[ha@hadoop0 tools]$ tar -zxvf jdk-7u67-linux-x64.tar.gz

2)设置环境变量(修改/etx/profile文件),

export JAVA_HOME=/usr/jdk1.7.0_67

export CLASSPATH=:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

   3)使环境变量生效,然后验证JDK是否安装成功。

[ha@hadoop1 ~]$ source /etc/profile

[ha@hadoop1 ~]$ java -version

java version "1.7.0_67"

Java(TM) SE Runtime Environment (build 1.7.0_67-b01)

Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)

5. 关闭防火墙

[root@hadoop0 ~]# chkconfig iptables off  //关闭开机启动

[root@hadoop0 ~]# service iptables stop   //停止防火墙

关闭selinux

[root@hadoop0 ~]# vi /etc/selinux/config

SELINUX=disable

6. 编译hadoop本地库,

如果是64linux,需要通过hadoop源代码重新编译本地库。32位的不用编译。

可以直接下载编译好的后面和编译相关的省略掉

1.)编译相关包下载

下载重新编译需要的软件包

apache-ant-1.9.6-bin.tar.gz

findbugs-3.0.1.tar.gz

protobuf-2.5.0.tar.gz

apache-maven-3.3.3-bin.tar.gz

下载hadoop2.7.1 的源码包

hadoop-2.7.1-src.tar.gz

   2)安装相关包

[root@hadoop0 ~]# tar -zxvf hadoop-2.7.1-src.tar.gz

[root@hadoop0 ~]# tar -zxvf apache-maven-3.3.3-bin.tar.gz -C /opt/

[root@hadoop0 ~]# tar -zxvf apache-ant-1.9.6-bin.tar.gz -C /opt/

[root@hadoop0 ~]# tar -zxvf findbugs-3.0.1.tar.gz -C /opt/

[root@hadoop0 ~]# tar -zxvf protobuf-2.5.0.tar.gz

   3) 修改/etc/profile

[root@hadoop0 ~]# vi /etc/profile

       export MAVEN_HOME=/home/ha/maven-3.3.3

export ANT_HOME=/home/ha/ant-1.9.6

export FINDBUGS_HOME=/home/ha/findbugs-3.0.1

export PATH=$PATH:$FINDBUGS_HOME/bin:$MAVEN_HOME/bin:$ANT_HOME/bin

[root@hadoop0 ~]# source /etc/profile

   4) 安装PROTOBUF

      [root@hadoop0 ~]#  cd protobuf-2.5.0

[root@hadoop0 ~]#  ./configure

[root@hadoop0 ~]#  make

[root@hadoop0 ~]#  make check

[root@hadoop0 ~]#  make install

   5)验证各软件是否安装成功。

[root@hadoop0 ~]#  mvn v

[root@hadoop0 ~]#  ant version

[root@hadoop0 ~]#  findbugs version

[root@hadoop0 ~]#  protoc version

  6)安装依赖包

[root@hadoop0 ~]# yum -y install svn ncurses-devel gcc*

[root@hadoop0 ~]# yum -y lzo-devel zlib-devel autoconf automake libtool cmake openssl-devel

7)编译hadoop

[root@hadoop0 hadoop-2.7.1-src]# cd /home/ha/hadoop-2.7.1-src

[root@hadoop0 hadoop-2.7.1-src]# mvn clean install –DskipTests

[root@hadoop0 hadoop-2.7.1-src]# mvn package -Pdist,native -DskipTests –Dtar

 

执行过程中,会从互联网下载许多东西,由于网络原因,可能会失败,多执行几次就会成功。

编译成功后,会出现

/home/ha/hadoop-2.7.1-src/hadoop-dist/target/hadoop-2.7.1/lib/native文件夹。

7. 安装hadoop

1) 解压hadoop

[ha@hadoop0 ~]$   tar –zxvf  hadoop-2.7.1.tar.gz

并将上一步编译好的native的内容替换/home/ha/hadoop-2.7.1/lib/native内容

2) 修改/home/ha/hadoop-2.7.1/etc/hadoop下配置文件。

hadoop-env.sh  hdfs-site.xml  core-site.xml  mapred-site.xml  slaves  yarn-env.sh  yarn-site.xml  略,详见配置文件.

需要建立/home/ha/tmp,/home/ha/dfs/name,/home/ha/dfs/data三个文件夹。

在core-site.xml中配置

<configuration>

<property>  

    <name>fs.defaultFS</name>  

    <value>hdfs://hadoop0:9000</value>  

  </property>  

  <property>  

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

    <value>131072</value>  

  </property>  

  <property>  

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

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

    <description>Abase for other temporary directories.</description>  

  </property>  

</configuration>

在hdfs-site.xml中配置

<configuration>

  <property>  

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

    <value>hadoop0:9001</value>  

  </property>  

  <property>  

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

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

  </property>  

  <property>  

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

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

  </property>  

  <property>  

    <name>dfs.replication</name>  

    <value>3</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>hadoop0:10020</value>

</property>

<property>

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

 <value>hadoop0:19888</value>

</property>

</configuration>

配置slaves

hadoop1

hadoop2

配置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>hadoop0:8032</value>  

  </property>  

  <property>  

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

    <value>hadoop0:8030</value>  

  </property>  

  <property>  

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

    <value>hadoop0:8031</value>  

  </property>  

  <property>  

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

    <value>hadoop0:8033</value>  

  </property>  

  <property>  

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

    <value>hadoop0:8088</value>  

  </property>  

</configuration>

确保hadoop-env.sh和yarn-env.sh中的JAVA_HOME是正确的。

3) 修改 /etc/profile  略,详见配置文件,蓝色用于编译hadoop

export JAVA_HOME=/usr/jdk1.7.0_67

export HADOOP_HOME=/home/ha/hadoop-2.7.1

export HIVE_HOME=/home/ha/hive-1.2.1

export MAVEN_HOME=/home/ha/maven-3.3.3

export ANT_HOME=/home/ha/ant-1.9.6

export FINDBUGS_HOME=/home/ha/findbugs-3.0.1

export HADOOP_COMMON_HOME=$HADOOP_HOME

export HADOOP_HDFS_HOME=$HADOOP_HOME

export HADOOP_MAPRED_HOME=$HADOOP_HOME

export HADOOP_YARN_HOME=$HADOOP_HOME

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"

 

export CLASSPATH=:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

export CLASSPATH=:$CLASSPATH:$HADOOP_HOME/lib

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

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

export PATH=$PATH:$FINDBUGS_HOME/bin:$ANT_HOME/bin:$MAVEN_HOME/bin

 

Master配好后用scp发到slave1slave2节点上去指令

scp -r /home/lilan/hadoop lilan@192.168.1.152(服务器IP:~/

scp -r ~/hadoop-2.6.0 lian@192.168.1.152:~/

~:代表的是/home/lian 文件夹  

修改hadoop文件夹的权限(slave1和slave2上都需):

chmod -R 777 /home/lilan/hadoop-2.6.0

修改 /etc/profile(每次修改profile注意,改坏了虚拟机就坏了,记得做快照)

改成export HADOOP_HOME=/home/ha/hadoop-2.7.1

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

 

环境变量生效

4) 格式化文件系统

[ha@hadoop0 ~]$   cd  /home/ha/hadoop-2.7.1/bin

[ha@hadoop0 ~]$   hdfs  namenode  -format

5) 启动hadoop

//启动时报Error: JAVA_HOME is not set and could not be found.

       //解决办法:

      //修改/etc/hadoop/hadoop-env.sh中设JAVA_HOME。

      //应当使用绝对路径。

       //export JAVA_HOME=$JAVA_HOME                  //错误,原来就这样的 不该就报错

       //export JAVA_HOME=/usr/java/jdk1.6.0_45        //正确,应该这么改

     //mkdir: cannot create directory `/usr/local/hadoop/bin/../logs': Permission denied

    //chmod -R 777/home/lilan/hadoop-2.6.0

[ha@hadoop0 ~]$ cd /home/ha/hadoop-2.7.1/sbin

//先启动./start-dfs.sh再启动./start-all.sh就行了(启动错误,查看日志/hadoop/...下的logs)

[ha@hadoop0 ~]$ ./start-all.sh

6) 查看进程,成功状态如下:

Hadoop0的进程

[ha@hadoop0 ~]$ jps

2931 SecondaryNameNode

3086 ResourceManager

6317 Jps

2738 NameNode

Hadoop1的进程

[ha@hadoop1 ~]$ jps

2475 NodeManager

3625 Jps

2361 DataNode

Hadoop2的进程

[ha@hadoop1 ~]$ jps

2475 NodeManager

3625 Jps

2361 DataNode

7) 停止hadoop

[ha@hadoop0 ~] cd  /home/ha/hadoop-2.7.1/sbin

[ha@hadoop0 ~] ./stop-all.sh

8) 浏览器中查看

主机

http://192.168.1.151:50070

http://192.168.1.151:8088

辅机

http://192.168.1.152:19888

8. hive的安装

1) 安装mysql

[root@hadoop0 ~]# yum –y  install mysql-server

2) 设置开机启动

[root@hadoop0 ~]# chkconfig mysqld on

3) 启动mysql

[root@hadoop0 ~]# service mysqld start

4) 设置root密码

[root@hadoop0 ~]# mysql –u root

mysql>set  password   for  'root'@'localhost'=password('111111'); 

mysql>set  password   for  'root'@'hadoop0'=password('111111');

 

 

5) 创建用户

[ha@hadoop0 ~]$ mysql -u root -p

Enter password:

mysql> create user 'hadoop'@'hadoop0' identified by '111111';

mysql> grant all privileges on *.* to 'hadoop'@'hadoop0' with grant option;

6) 创建数据库

[root@hadoop0 ~]# su – ha

[ha@hadoop0 ~]$ mysql -h hadoop0 -u hadoop -p

mysql> create  database  hive;

7) 下载解压hive

apache-hive-1.2.1-bin.tar.gz

[ha@hadoop0 ~]$ tar –zxvf apache-hive-1.2.1-bin.tar.gz

8) 配置/etx/profileroot用户)

[root@hadoop0 ~]# vi /etx/profile

export HIVE_HOME=/home/ha/hive-1.2.1

export PATH=$PATH: $HIVE_HOME/bin

授权

[root@hadoop0 ~]# chmod 777 /home/ha/hive-1.2.1/bin/*

 

9) 创建/user/hive/warehouse

[ha@hadoop0 ~]$ hdfs dfs -mkdir -p  /user/hive

[ha@hadoop0 ~]$ hdfs dfs -mkdir -p  /user/hive/ warehouse

10) 配置Hive,编辑/home/ha/hive-1.2.1/conf/ hive-site.xml

<configuration>

    <!-- Hive Execution Parameters -->

<property>

  <name>javax.jdo.option.ConnectionURL</name>

  <value>jdbc:mysql://hadoop0:3306/hive?createData baseIfNotExist=true</value>

  <description>JDBC connect string for a JDBC metastore</description>

</property>

<property>

<name>javax.jdo.option.ConnectionDriverName</name>

  <value>com.mysql.jdbc.Driver</value>

  <description>Driver class name for a JDBC metastore</description>

</property>

<property>

<name>javax.jdo.option.ConnectionUserName</name>

   <value>hadoop</value>

   <description>username to use against metastore database</description>

</property>

<property>

<name>javax.jdo.option.ConnectionPassword</name>

   <value>111111</value>

   <description>password to use against metastore database</description>

</property>

<property>

    <name>hive.metastore.warehouse.dir</name>

    <value>/user/hive/warehouse</value>

    <description>location of default database for the warehouse</description>

 </property>

</configuration>

11) 上传mysql JDBC 驱动程序到/home/ha/hive-1.2.1/lib

mysql-connector-java-5.1.13-bin.jar

12) 启动hive

[ha@hadoop0 ~]$ hive

查看表

hive> show tables; 

创建表test

hive>create table test(id int,name string);

查看test表字段

hive> desc test;

 

 

原创粉丝点击