写在前面:在Linux下安装Hadoop时,应注意权限问题,将hadoop的权限赋给非root用户。<br/>本文中未涉及如何在Linux下创建新用户。<br/>
<h3>第一步,安装JDK</h3> <p> 1. 下载 java.sun.com<br/> 2. 解压tar.gz的文件<br/> tar -xzvf jdk-7u17-linux-x64.tar.gz<br/> 3. 把解压出来的文件夹移动到/usr/local/jdk-1.7目录<br/> mv /usr/local/src/jdk1.7.0_17 /usr/local/jdk-1.7<br/> 4. 修改profile<br/> vi /etc/profile<br/> 在最后追加<br/> export JAVA_HOME=/usr/local/jdk1.7.0_17<br/> export JRE_HOME=$JAVA_HOME/jre<br/> export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar <br/> export PATH=$PATH:$JAVA_HOME/bin<br/> 5. 使环境变量生效<br/> source /etc/profile<br/> 6. 查看当前jdk<br/> update-alternatives --display java<br/> 7. 配置默认jdk<br/> update-alternatives --install /usr/bin/java java /usr/local/jdk1.7.0_17/bin/java 300<br/> update-alternatives --install /usr/bin/javac javac /usr/local/jdk1.7.0_17/bin/javac 300<br/> update-alternatives --install /usr/bin/javap javap /usr/local/jdk1.7.0_17/bin/javap 300<br/> update-alternatives --install /usr/bin/javadoc javadoc /usr/local/jdk1.7.0_17/bin/javadoc 300<br/> <br/> update-alternatives --config java<br/> 如果系统中安装了其他jdk,会提示,选择jdk7<br/> 8. 测试<br/> java -version<br/> </p> <h3>第二步,安装SSHD服务</h3> <p> ubuntu安装sshd命令:sudo apt-get install openssh-server<br/> ubuntu删除sshd命令:sudo apt-get remove openssh-server<br/> </p> <h3>第三步,配置无密登录</h3> <p> (应该非root用户下执行)<br/> ssh-keygen<br/> cd ~/.ssh<br/> mv id_rsa.pub id_rsa_hadoop.pub<br/> touch authorized_keys<br/> cat id_rsa_hadoop.pub >> authorized_keys<br/> </p> <h3>第四步,下载Hadoop并解压</h3> <p> 解压:tar -zxvf hadoop-1.0.3.tar.gz<br/> 移动:mv hadoop-1.0.3 /usr/local/hadoop<br/> 更改文件夹chown -R hadoop.hadoop hadoop<br/>
创建目录:mkdir /data /data/hadoop<br/> 更改文件夹chown -R hadoop.hadoop /data/hadoop<br/>
</p> <h3>第五步,配置Hadoop</h3> <p> 配置 conf/hadoop-env.sh <br/> export JAVA_HOME=/usr/local/jdk-1.7<br/> export HADOOP_LOG_DIR=/data/hadoop/logs<br/> export HADOOP_PID_DIR=/data/hadoop/pids<br/> 修改/etc/profile<br/> 添加:export HADOOP_PID_DIR=/data/hadoop/pids<br/> 配置 core-site.xml<br/> <pre> <configuration> <property> <!-- 参数 fs.default.name 指定 Name Node 的 IP 地址和端口号,缺省namenode的8020端口 --> <name>fs.default.name</name> <value>hdfs://master:8020</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/data/hadoop/tmp</value> </property> </configuration> </pre> 配置 hdfs-site.xml<br/> <pre> <configuration> <property> <!-- 参数 dfs.name.dir 指定 Name Node 相关数据在本地文件系统上的存放位置 --> <name>dfs.name.dir</name> <value>/data/hadoop/name</value> </property> <property> <!-- 参数 dfs.data.dir 指定 Data Node 相关数据在本地文件系统上的存放位置 --> <name>dfs.data.dir</name> <value>/data/hadoop/data</value> </property> <property> <!-- 设置hdfs系统备份文件数,此值设置为2,说明当一个文件上传到hdfs系统中,会被备份2个 --> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.permissions</name> <value>false</value> </property> <property> <!-- 添加hadoop.job.ugi属性,指定用户和组 --> <name>hadoop.job.ugi</name> <value>hadoop,supergroup</value> </property> </configuration> </pre> 配置 mapred-site.xml<br/> <pre> <configuration> <property> <!-- JobTracker 的 IP 地址和端口号 --> <name>mapred.job.tracker</name> <value>master:8021</value> </property> <property> <!-- tasktracker 最多可以同时运行的map任务数量 --> <!-- 默认值:2 --> <!-- 优化值:mapred.tasktracker.map.tasks.maximum = cpu数量 --> <!-- cpu数量 = 服务器CPU总核数 / 每个CPU的核数 --> <!-- grep 'physical id' /proc/cpuinfo | sort | uniq | wc -l --> <!-- 服务器CPU总核数 = cat /proc/cpuinfo | grep 'processor' | wc -l --> <!-- 每个CPU的核数 = cat /proc/cpuinfo | grep 'cpu cores' --> <name>mapred.tasktracker.map.tasks.maximum</name> <value>2</value> </property> <property> <!-- Job会使用task tracker的map任务槽数量,这个值 ≤ mapred.tasktracker.map.tasks.maximum --> <!-- 默认值:2 --> <!-- 优化值:--> <!-- (CPU数量 > 2) ? (CPU数量 * 0.75) : 1 --> <name>mapred.map.tasks</name> <value>2</value> </property> <property> <!-- task tracker最多可以同时运行的reduce任务数量 --> <!-- 默认值:2 --> <!-- 优化值: (CPU数量 > 2) ? (CPU数量 * 0.50): 1 --> <name>mapred.tasktracker.reduce.tasks.maximum</name> <value>2</value> </property> <property> <!-- Job会使用task tracker的reduce任务槽数量 --> <!-- 默认值:1 --> <!-- 优化值: 0.95 * mapred.tasktracker.tasks.maximum --> <name>mapred.reduce.tasks</name> <value>1</value> </property> <property> <!-- 启用压缩 --> <name>mapred.compress.map.output</name> <value>true</value> </property> <property> <!-- 平衡的cpu和磁盘压缩比,LzoCodec --> <name>mapred.map.output.compression.codec</name> <value>com.hadoop.compression.lzo.LzoCodec</value> </property> </configuration> </pre> </p> <h3>第六步,启动关闭hadoop</h3> <p> bin/hadoop namenode -format (只在第一次启动时需要,用于格式化名称节点)<br/> bin/start-all.sh<br/> 使用浏览器访问http://localhost:50070和http://localhost:50030查看Hadoop是否启动成功。<br/> bin/stop-all.sh<br/> </p>