【大数据】一键安装hadoop(伪集群)

本文提供了一个bash脚本,用于快速搭建Hadoop伪集群测试环境。包括JDK的安装配置、Hadoop环境变量设置及核心配置文件的修改等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 大数据选型中,很多都要依赖使用hadoop,工作中需要快速的构建hadoop测试环境。可以使用下面脚本快速安装hadoop环境。

#!/bin/bash
#################################################################################
# 作者:cxy@toc-2022-12-05                                                           
# 功能:自动搭建hadoop 伪集群模式(用于测试)
# https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html#Standalone_Operation                                           
#                                                                               
#################################################################################

proj_dir=/cxy
proj_bao_dir="${proj_dir}/bao"
proj_jdk_dir="${proj_dir}/jdk"
proj_bd_dir="${proj_dir}/bigdata"
proj_bd_data_dir="/cxy/bigdata/data/hadoop"

mkdir -p ${proj_bao_dir}
mkdir ${proj_jdk_dir}
mkdir ${proj_bd_dir}

install_jdk(){
cd ${proj_bao_dir}
wget https://repo.huaweicloud.com/java/jdk/8u151-b12/jdk-8u151-linux-x64.tar.gz

tar xf ${proj_bao_dir}/jdk-8u151-linux-x64.tar.gz -C ${proj_jdk_dir}
cat >> /etc/profile <<EOF

export JAVA_HOME=${proj_jdk_dir}/jdk1.8.0_151
export JRE_HOME=\${JAVA_HOME}/jre
export CLASSPATH=.:\${JAVA_HOME}/lib:\${JRE_HOME}/lib
export PATH=.:\${JAVA_HOME}/bin:\$PATH
EOF

source /etc/profile
}

echo "0、安装JDK(如需要,解开注释)"
install_jdk

echo "1、创建目录、下载tar包、解压"
mkdir ${proj_bd_dir}
cd ${proj_bd_dir}
wget https://repo.huaweicloud.com/apache/hadoop/common/hadoop-3.3.2/hadoop-3.3.2.tar.gz --no-check-certificate
mkdir
tar zxvf hadoop-3.3.2.tar.gz


echo "2、写入环境变量"
cat >> /etc/profile <<EOF

#Hadoop
export HADOOP_HOME=${proj_bd_dir}/hadoop-3.3.2
export PATH=\$PATH:\$HADOOP_HOME/bin
export PATH=\$PATH:\$HADOOP_HOME/sbin

export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
EOF

source /etc/profile
hadoop version


echo "3、修改hadoop相关配置文件"
cd ${proj_bd_dir}/hadoop-3.3.2

#备份要改动的文件
cp etc/hadoop/hadoop-env.sh etc/hadoop/hadoop-env.sh.bak
cp etc/hadoop/core-site.xml etc/hadoop/core-site.xml.bak
cp etc/hadoop/hdfs-site.xml etc/hadoop/hdfs-site.xml.bak

#修改配置文件
sed -i '42aexport JAVA_HOME='${proj_jdk_dir}'/jdk1.8.0_151' etc/hadoop/hadoop-env.sh

rm -f etc/hadoop/core-site.xml
touch etc/hadoop/core-site.xml
cat >> etc/hadoop/core-site.xml <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<property>
   		<name>fs.defaultFS</name>
   		<value>hdfs://localhost:9000</value>
 	</property>

 	<!-- 数据存储目录 -->
  	<property>
   		<name>hadoop.tmp.dir</name>
   		<value>${proj_bd_data_dir}/tmp</value>
 	</property>

 	<!-- 仅限测试环境下使用 -->
 	<property>
        <name>hadoop.http.staticuser.user</name>
        <value>root</value>
    </property>
</configuration>
EOF

rm -f etc/hadoop/hdfs-site.xml
touch etc/hadoop/hdfs-site.xml
cat >> etc/hadoop/hdfs-site.xml <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<property>
		<name>dfs.namenode.name.dir</name>
		<value>file:${proj_bd_data_dir}/hdfs/name</value>
	</property>

	<property>
	    <name>dfs.datanode.data.dir</name>
	    <value>file:${proj_bd_data_dir}/hdfs/data</value>
	</property>

	<property>
	     <name>dfs.replication</name>
	     <value>1</value>
	</property>
</configuration>
EOF

echo "4、配置自登陆"
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

echo "5、初始化文件系统"
#Format the filesystem
bin/hdfs namenode -format

echo "6、启动服务"
sbin/start-dfs.sh

echo "7、验证"
jps

echo "安装完成,访问:http://ip:9870/"

#上传测试命令:hadoop fs -put ~/install_hadoop.sh /aaa

保存该文件:install_hadoop.sh

执行:

chmod +x install_hadoop.sh

./install_hadoop.sh

### 大数据一键编译与安装的最佳实践 在大数据领域,随着技术栈复杂性的增加以及企业需求的变化,如何高效完成大数据项目的编译和部署成为了一个重要课题。以下是针对大数据项目的一键编译与安装方案的一些最佳实践: #### 工具支持的重要性 StreamPark 提供了一套完整的功能来简化 Flink 作业的开发过程,其中包括 FlinkSQL IDE、参数管理、任务管理等功能[^2]。通过这些工具的支持,开发者能够更加专注于业务逻辑本身,而无需过多关注底层的技术细节。 对于大数据项目而言,类似的工具链可以帮助团队快速构建并发布应用。因此,在设计一键编译与安装方案时,应优先考虑引入成熟的框架或平台作为基础架构的一部分。 #### 自动化脚本的设计原则 为了实现真正意义上的一键操作体验,自动化脚本应当遵循以下几个核心原则: 1. **模块化结构**: 将复杂的流程拆分为多个独立的小步骤,并分别封装到不同的函数或者子程序当中。 2. **错误处理机制**: 增强异常捕获能力,当某个环节失败时能及时反馈给用户具体原因以便排查问题所在。 3. **日志记录详尽**: 记录每一步执行情况至文件中方便后续审计追踪。 4. **配置灵活可调**: 使用外部配置文件定义环境变量等动态信息而非硬编码于源码内部。 下面是一个简单的 Python 脚本来演示上述概念的应用实例: ```python import os from pathlib import Path def check_environment(): """验证运行环境""" required_vars = ['JAVA_HOME', 'HADOOP_CONF_DIR'] missing = [var for var in required_vars if not os.getenv(var)] if missing: raise EnvironmentError(f"Missing environment variables: {missing}") def compile_code(base_dir): """编译代码""" build_script_path = Path(base_dir) / "build.sh" if not build_script_path.exists(): raise FileNotFoundError("Build script does not exist.") result = os.system(str(build_script_path)) if result != 0: raise RuntimeError("Compilation failed.") def deploy_artifacts(target_server, artifact_name): """分发构件""" scp_command = f'scp {artifact_name} user@{target_server}:/opt/apps/' status = os.system(scp_command) if status != 0: raise ConnectionError('Failed to copy artifacts.') if __name__ == "__main__": try: base_directory = "/path/to/project/" target_machine = "example.com" check_environment() compile_code(base_directory) deploy_artifacts(target_machine, "myapp.jar") print("Deployment completed successfully!") except Exception as e: with open('/tmp/deploy.log', 'a') as log_file: log_file.write(str(e)+'\n') exit(1) ``` 此脚本涵盖了基本的功能单元测试、依赖项检查以及远程服务器上的资源上传等方面的内容。 #### 改进建议 尽管目前市场上已经存在像 StreamPark 这样的优秀产品降低了部分工作负担,但在实际应用场景里仍可能存在一些局限性。为此提出如下几点改进建议: - 加强与其他系统的对接兼容性,尤其是 CI/CD 流水线服务; - 扩展插件生态系统以满足更多个性化定制需求; - 完善文档资料库帮助新成员更快地上手使用该系统。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值