安装环境
操作系统:ubuntu14.10,运行在virtualBox上。
Hadoop:hadoop-1.0.4.tar.gz
JDK:jdk-7u25-linux-i586.tar.gz
首先把要用到的压缩包上传到Ubuntu,在这里我使用Xshell作为远程管理工具,Xftp作为文件管理工具。在/home/caiyong(当前用户目录)下创建setup文件夹,将hadoop-1.0.4.tar.gz和jdk-7u25-linux-i586.tar.gz上传到/home/caiyong/setup。
Step1.添加用户和组
(1)添加组:
addgroup hadoop //组名为hadoop(2)添加用户:
adduser -ingroup hadoop hadoop //在hadoop组中添加名为hadoop用户添加新的用户和组的作用: 使用独立的账户保护hadoop文件,防止被其他用户修改,同时还能防止程序修改其他账户的文件。
Step2.hosts的配置
Hadoop通过域名来进行互相访问,通过修改/etc/hosts文件可以配置本地域名映射关系,在hosts文件中添加计算机的域名(别名)和IP的对应关系,如在本机中添加slave1的主机,假设ip为192.168.1.1,则在末尾添加的内容为:192.168.1.1 master。
(修改hosts时可能会提示权限不够,修改/etc/hosts文件的权限:chmod 777 /etc/hosts)
然后修改/etc/sysconfig/network文件,将主机名改为master,在network文件后面添加一行:HOSTNAME=master。重启系统后,主机名便会生效。也可以运行如下命令设置主机名,无须重启:
hostname master然后输入hostname查看主机名已经变为master。
Step3.ssh无密码登录
(1)安装ssh客户端:
sudo apt-get install ssh(2)生成无密码的“公私钥”对:
su hadoop //切换到hadoop用户
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa // ssh-keygen代表生成密钥,-t表示指定生成的密钥类型,密钥类型为dsa和 rsa都可以,-P ''表示密码为空,-f指向生成的密钥文件地址为~/.ssh/id_dsa 在Ubuntu中,~代表当前用户文件夹,这里为:/home/caiyong
cd .ssh/ ls -alh //查看秘钥文件
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys //把公钥追加到用于认证的公钥文件中,这里authorized_keys就是用于认证的公钥文件 chmod 600 ~/.ssh/authorized_keys //给authorized_keys最小的权限600,其他用户不能写(3)验证ssh是否安装成功
切换到根目录:cd ~,修改.ssh的权限:chmod 700 .ssh/
输入:
ssh -V
显示ssh的版本信息,则说明ssh安装成功。
输入:
ssh localhost会自动登录到localhost而不需要输入密码。
Step4.JDK的安装与配置
运行hadoop需要JDK1.6及以上的版本。
(1)安装
tar -zxvf jdk-7u25-linux-i586.tar.gz -C /usr/java // /usr/java是解压后存放jdk的位置 //建立一个软连接,目的是减少以后输入的复杂度,以后输入jdk就代表输入的是jdk1.7.0_25,便于配置 ln -s /usr/java/jdk1.7.0_25 /usr/java/jdk(2)配置环境变量 在/etc/profile文件中添加下面的内容:
export JAVA_HOME=/usr/java/jdk export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar在命令行下输入: source /etc/profile使修改生效
java -version显示java的版本信息,则说明JDK安装成功。
sudo update-alternatives --install /usr/bin/java java /usr/java/jdk/bin/java 300 sudo update-alternatives --install /usr/bin/javac javac /usr/java/jdk/bin/javac 300 sudo update-alternatives --config java
Step5.hadoop的安装
在分布式安装的模式下,所有服务器的hadoop的安装目录需要一样,我安装的位置是:/opt/hadoop
tar -zxvf hadoop*.tar.gz -C /opt mv /opt/hadoop-1.0.4 hadoop //把hadoop-1.0.4 移动到hadoop,方便配置 chown -R hadoop:hadoop /opt/hadoop/ //把hadoop文件的权限赋给hadoop组的hadoop用户
Step6.配置hadoop
首先切换到hadoop用户:
su hadoop修改hadoop目录下conf/hadoop-env.sh的环境变量,在末尾添加:
export JAVA_HOME=/usr/java/jdk export HADOOP_HEAPSIZE=256 export HADOOP_PID_DIR=/home/$USER/pids修改hadoop目录下 conf/core-site.xml的配置文件,在 <configuration>标签中添加如下内容:
<property> <name>fs.default.name</name> <value>hdfs://master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/${user.name}/tmp</value> </property>修改hadoop目录下 conf/hdfs-site.xml的配置文件,在 <configuration>标签中添加如下内容:
<property> <name>dfs.replication</name> //因为这是伪分布式模式,所以备份数为1 <value>1</value> </property> <property> <name>dfs.name</name> <value>/home/${user.name}/dfs_name</value> </property> <property> <name>dfs.data.dir</name> <value>/home/${user.name}/dfs_data</value> </property>修改 hadoop目录下 cong/mapred-site.xml的配置,在 <configuration>标签中添加如下内容:
<property> <name>mapred.job.tracker</name> <value>master:9001</value> </property> <property> <name>mapred.system.dir</name> <value>/home/${user.name}/mapred_system</value> </property> <property> <name>mapred.local.dir</name> <value>/home/${user.name}/mapred_local</value> </property>配置辅助名称节点:修改hadoop目录conf/masters文件,修改内容为:
Step7.执行Hadoop
(1)格式化:
./bin/hadoop namenode -format(在/opt/hadoop目录下面执行)(2)启动hadoop守护进程:
./bin/start-all.shhadoop的守护进程的日志写入到{HADOOP_LOG_DIR}目录(默认为log下面)
如果出现6个进程:jps,namenode,secondarynamenode,datanode,jobtraacker和tasktracker,则说明Hadoop安装成功。
(4)浏览namenode和jobtracker的网络接口,默认地址是:
namenode:http://192.168.56.101:50070/
jobtracker:http://192.168.56.101:50030/
参考资料:《Hadoop实战》 第二版 陆嘉恒 著 机械工业出版社
《Hadoop实战手册》 [美]Jonathan R.Owens 等 著 傅杰 等 译 人民邮电出版社