Ubuntu下hadoop集群安装

一、需要的软件

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

二、安装环境

三台电脑建立hadoop集群
一台电脑修改主机名为master

另一台修改主机名为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  

如果报错:Privilege separation user sshd does not exist 

解决方案:在/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>

配置master和slaves主从节点
sudo gedit ./conf/masters
输入:
master
sudo gedit ./conf/slaves
输入:
slave1
slave2
配置结束,把配置好的hadoop文件夹拷贝到其他集群的机器中
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

Javajps命令列出所有守护进程来验证安装成功

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目录的写权限


参考:
http://www.linuxidc.com/Linux/2013-09/90600.htm

你可能感兴趣的:(ubuntu,HADOOP集群)