一、需要的软件
1、jdk-7u21-linux-i586.tar.gz
2、hadoop:hadoop-1.2.1.tar.gz
3、zlib:zlib-1.2.5.tar.gz
4、openssl-1.0.1j.tar.gz
5、openssh-6.7p1.tar.gz
6、ubuntu14.04
二、安装环境
另一台修改主机名为slave1
另一台修改主机名为slave2
sudo gedit /etc/hostname
在三台电脑上都修改hosts文件
sudo gedit /etc/hosts
删除所有内容,然后添加
192.168.1.10 master
192.168.1.11 slave1
192.168.1.12 slave2
三、安装
2.1 安装jdk
mkdir usr/lib/jvm//创建文件夹jvm
sudo tar zxf./jdk-7u21-linux-i586.tar.gz -C/usr/lib/jvm //解压到jvm文件夹下
设置环境变量,用gedit打开/etc/profile文件
sudo gedit /etc/profile
在文件的最后面增加:
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_21
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
2.2 配置 SSH
- 先添加hadoop用户到系统用户
sudo addgroup hadoop
sudo adduser --ingroup hadoop hadoop
现在只是添加了一个用户hadoop,它并不具备管理员权限,我们给hadoop用户添加权限,打开/etc/sudoers文件
sudo gedit /etc/sudoers
在root ALL=(ALL:ALL) ALL下添加hadoop ALL=(ALL:ALL) ALL
- 安装ssh
假设ssh安装完成,先启动服务。启动后,可以通过命令查看服务是否正确启动:
sudo /etc/init.d/ssh start
ps -e |grep ssh
第一种:有网的情况下在线安装ssh
sudo apt-get install openssh-server
第二种:手动安装ssh
安装zlib
tar -xvzf zlib-1.2.5.tar.gz /usr/local
cd /usr/local/zlib-1.2.5
./configure
make
make install
安装openssl
tar -xzf openssl-openssl-1.0.1j.tar.gz
cd openssl-1.0.1j
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl
./config -t
make
make install
安装openssh
tar xzpf openssh-2.5.2p2.tar.gz
./configure --sysconfdir=/etc/ssh --with-tcp-wrappers --with-ipv4-default --with-ssl-dir=/usr/local/openssl
make
sudo make install
启动sshd服务
sudo /usr/local/sbin/sshd
解决方案:在/etc/passwd 中加入
sshd:x:74:74:Privilege-separated
SSH:/var/empty/sshd:/sbin/nologin
之后再次启动sshd服务
配置ssh无密码登陆
su hadoop
cd /home/hadoop
ssh-keygen -t rsa -P '' -f /.ssh/id_rsa
cat /.ssh/id_rsa.pub >> /.ssh/authorized_keys
chmod 644 /.ssh/authorized_keys
chmod 700 /.ssh
在另一台机器上,比如主机名为slave1上执行以下命令:
su hadoop
cd /home/hadoop
ssh-keygen -t rsa //生成公钥和私钥,一路回车
在master主机上进入/home/hadoop/.ssh目录中,复制authorized_keys到slave1的.ssh文件夹中
scp authorized_keys hadoop@slave1:/home/hadoop/.ssh
修改已经传输到slave1的authorized_keys的许可权限
chmod 644 authorized_keys
ssh slave1 #测试无密码访问slave1
登出:
exit
slave2同上面的执行步骤
2.3 安装Hadoop
sudo tar xzf hadoop-1.2.1.tar.gz
(注意,我已将hadoop-1.1.2.tar.gz拷贝到/usr/local,然后转到hadoop用户上)
sudo mv hadoop-1.2.1 /usr/local/hadoop //将hadoop-1.2.1文件夹名字改为hadoop
要确保所有的操作都是在用户hadoop下完成的,所以将该hadoop文件夹的属主用户设为hadoop
sudo chown -R hadoop:hadoop hadoop
配置hadoop-env.sh(Java安装路径)
sudo gedit usr/local/hadoop/conf/hadoop-env.sh
进入hadoop目录,打开conf目录下到hadoop-env.sh,添加以下信息:
exportJAVA_HOME=/usr/lib/jvm/jdk1.7.0_21
exportHADOOP_HOME=/usr/local/hadoop
exportPATH=$PATH:/usr/local/hadoop/bin
让环境变量配置生效source
source /usr/local/hadoop/conf/hadoop-env.sh
验证hadoop是否正常运行
hadoop version
配置core-site.xml
sudo gedit conf/core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:49000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
</configuration>
配置hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/usr/local/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/local/hadoop/hdfs/data</value>
</property>
</configuration>
配置mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
</property>
</configuration>
sudo gedit ./conf/masters
输入:
sudo gedit ./conf/slaves
输入:
scp -r /home/local/hadoop hadoop@slave1:/home/local/
scp -r /home/local/hadoop hadoop@slave2:/home/local/
2.4 hadoop启动与测试
格式化一个新的分布式文件系统
hadoop namenode -format #格式化文件系统
启动所有节点
start-all.sh
用Java的jps命令列出所有守护进程来验证安装成功
jps
若运行jps出现:程序 'jps'已包含在下列软件包中:
*openjdk-6-jdk
*openjdk-7-jdk
请尝试:sudo apt-get install <选定的软件包>
解决方案:
sudo update-alternatives --install /usr/bin/jps jps /usr/lib/jvm/jdk1.7.0_21/bin/jps 1
查看集群的状态:
hadoop dfsadmin -report
检查运行状态所有的设置已完成,Hadoop也启动了,现在可以通过下面的操作来查看服务是否正常,在Hadoop中用于监控集群健康状态的Web界面:
http://master:50030/ - Hadoop 管理介面
http://master:50070/ - Hadoop DFS状态
安装过程中出现的问题:
1、如果不小心删除了生成的钥匙,再次生成同名的钥匙生成不了,可以考虑生成到另外的文件夹试试
2、我是在ubuntu14.10 32位版本下安装成功了,其他版本安装openssh时出现以下问题:1)openssl的 header和library版本不匹配
2)configure: error: *** OpenSSL headers missing - please install first or check config.log
解决办法:
换一个openssl软件包,可以查看系统默认的ssl版本,下载相同的版本试试。
或者:在安装openssh配置步骤时:运行
./configure --sysconfdir=/etc/ssh --with-tcp-wrappers --with-ipv4-default --with-ssl-dir=/usr/local/openssl --without-openssl-header-check
3、格式化分布式系统时出现host = java.net.UnknownHostException: master错误
解决办法:
查看/etc/hosts文件中是否有IP地址和对应的主机名master
使用命令hostname查看主机名是否是master
不行的话再换个主机名,比如masters,重启电脑(我的问题就是这么解决的)
4、当删除hadoop文件夹中的文件删除不了,可以先将hadoop的目录权限设为当前用户可写sudo chmod -R a+w /usr/local/hadoop,授予hadoop目录的写权限