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
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
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安装完成,先启动服务。启动后,可以通过命令查看服务是否正确启动:
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
登出:
exitslave2同上面的执行步骤
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/
格式化一个新的分布式文件系统
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检查运行状态
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目录的写权限