本文为笔者安装配置过程中详细记录的笔记
1. 下载hadoop
hadoop-2.7.1.tar.gz
hadoop-2.7.1-src.tar.gz 64位linux需要重新编译本地库
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)下载JDK(32或64位),解压
[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本地库,
如果是64位linux,需要通过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中配置
在hdfs-site.xml中配置
配置mapred-site.xml文件
配置slaves
hadoop1
hadoop2
配置yarn-site.xml
确保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发到slave1和slave2节点上去指令:
scp -r /home/lilan/hadoop lilan@192.168.1.152(服务器IP):~/
scp -r ~/hadoop-2.6.0 [email protected]:~/
~:代表的是/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/profile(root用户)
[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
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;